fix(docker): run.sh 加 umask 000 + 预创建 runtime 子目录

bind mount 模式下 Dockerfile 的权限处理被宿主目录覆盖,
PHP 新建的子目录(runtime/cache/da/ 等)默认 755 导致 www-data 无法写入。
- 开头加 umask 000 让子进程创建的文件/目录全局可写
- mkdir 预创建 cache/log/temp/session/nginx 子目录
- docker-dev 和 docker-dev-sync 同步修复
This commit is contained in:
augushong
2026-08-08 10:33:44 +08:00
parent 8faa52ce90
commit 7341268ceb
2 changed files with 16 additions and 2 deletions

View File

@@ -1,5 +1,10 @@
#!/bin/bash
# 开发环境 umaskbind mount 下 Dockerfile 的权限处理被宿主目录覆盖,
# PHP 新建的子目录(如 runtime/cache/da/)默认 755 导致 www-data 无法写入。
# 设 000 让子进程php-fpm worker / timer创建的文件/目录全局可写。
umask 000
# 自动检测脚本所在目录B-route 兼容bind mount 下路径为 source/stack/<mode>/source/docker/
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
@@ -44,7 +49,9 @@ cp "$SCRIPT_DIR/zzz-dev.ini" /usr/local/etc/php/conf.d
cp "$SCRIPT_DIR/zzz-xdebug.ini" /usr/local/etc/php/conf.d
# ---- Step 3: Set directory permissions ----
mkdir -p /var/www/html/runtime && chmod -R 777 /var/www/html/runtime
# bind mount 覆盖 Dockerfile 的 mkdir/chmod必须在启动脚本中重建
# 预创建 ThinkPHP 运行时关键子目录,避免首次写入时 No such file or directory
mkdir -p /var/www/html/runtime/{cache,log,temp,session,nginx} && chmod -R 777 /var/www/html/runtime
mkdir -p /var/www/html/public/storage && chmod -R 777 /var/www/html/public/storage
mkdir -p /var/www/html/public/build && chmod -R 777 /var/www/html/public/build
mkdir -p /var/www/html/storage && chmod -R 777 /var/www/html/storage

View File

@@ -1,5 +1,10 @@
#!/bin/bash
# 开发环境 umaskbind mount 下 Dockerfile 的权限处理被宿主目录覆盖,
# PHP 新建的子目录(如 runtime/cache/da/)默认 755 导致 www-data 无法写入。
# 设 000 让子进程php-fpm worker / timer创建的文件/目录全局可写。
umask 000
# 自动检测脚本所在目录B-route 兼容bind mount 下路径为 source/stack/<mode>/source/docker/
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
@@ -17,7 +22,9 @@ cp "$SCRIPT_DIR/zzz-xdebug.ini" /usr/local/etc/php/conf.d
# 设置目录权限,确保挂载卷后依然有效
mkdir -p /var/www/html/runtime && chmod -R 777 /var/www/html/runtime
# bind mount 覆盖 Dockerfile 的 mkdir/chmod必须在启动脚本中重建
# 预创建 ThinkPHP 运行时关键子目录,避免首次写入时 No such file or directory
mkdir -p /var/www/html/runtime/{cache,log,temp,session,nginx} && chmod -R 777 /var/www/html/runtime
mkdir -p /var/www/html/public/storage && chmod -R 777 /var/www/html/public/storage
mkdir -p /var/www/html/public/build && chmod -R 777 /var/www/html/public/build
mkdir -p /var/www/html/storage && chmod -R 777 /var/www/html/storage