diff --git a/source/stack/docker-dev-sync/source/docker/run.sh b/source/stack/docker-dev-sync/source/docker/run.sh index c7b424b..6edf195 100644 --- a/source/stack/docker-dev-sync/source/docker/run.sh +++ b/source/stack/docker-dev-sync/source/docker/run.sh @@ -1,5 +1,10 @@ #!/bin/bash +# 开发环境 umask:bind mount 下 Dockerfile 的权限处理被宿主目录覆盖, +# PHP 新建的子目录(如 runtime/cache/da/)默认 755 导致 www-data 无法写入。 +# 设 000 让子进程(php-fpm worker / timer)创建的文件/目录全局可写。 +umask 000 + # 自动检测脚本所在目录(B-route 兼容:bind mount 下路径为 source/stack//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 diff --git a/source/stack/docker-dev/source/docker/run.sh b/source/stack/docker-dev/source/docker/run.sh index e900734..57ba496 100644 --- a/source/stack/docker-dev/source/docker/run.sh +++ b/source/stack/docker-dev/source/docker/run.sh @@ -1,5 +1,10 @@ #!/bin/bash +# 开发环境 umask:bind mount 下 Dockerfile 的权限处理被宿主目录覆盖, +# PHP 新建的子目录(如 runtime/cache/da/)默认 755 导致 www-data 无法写入。 +# 设 000 让子进程(php-fpm worker / timer)创建的文件/目录全局可写。 +umask 000 + # 自动检测脚本所在目录(B-route 兼容:bind mount 下路径为 source/stack//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