From 6bc661117cdcd00a038fcc38f48fc73e489be9ee Mon Sep 17 00:00:00 2001 From: augushong Date: Wed, 22 Jul 2026 23:18:16 +0800 Subject: [PATCH] =?UTF-8?q?fix(stack):=20=E4=BF=AE=E5=A4=8D=20B-route=20?= =?UTF-8?q?=E4=B8=8B=E6=89=80=E6=9C=89=20Dockerfile=20COPY=20=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E4=B8=8E=20build=20context=20=E4=B8=8D=E5=8C=B9?= =?UTF-8?q?=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit B-route 把 build context 改为仓库根后,Dockerfile 中的 COPY source/docker/... 和 chmod/ENTRYPOINT 引用 /var/www/html/source/docker/ 全部失效。 根因: - 仓库根有全局 source/docker/(仅 nginx.conf/zz-phprun.ini/zz-phpfpm.conf 基础配置) - 模式专属配置(run.sh、zzz-dev.ini、zzz-xdebug.ini 等)在 source/stack//source/docker/ - COPY . 把全局 source/docker/ 复制进容器,但缺少模式专属文件 - 旧 COPY source/docker/zzz-dev.ini 在 context=仓库根时找不到文件 修复(所有 5 个模式统一): - 每个 Dockerfile 在 COPY . 后加 rm -rf + ln -sf symlink, 让 /var/www/html/source/docker 指向模式专属配置目录 - COPY ini 文件路径改为完整的 source/stack//source/docker/... - .dockerignore 去掉 source/stack/ 排除(配置文件仅几 KB, 但 COPY 需要这些文件在 build context 中) - .dockerignore 加 docker-dev/docker-dev-data 排除(旧数据残留) --- .dockerignore | 3 ++- source/stack/author/Dockerfile | 3 +++ source/stack/docker-dev-sync/Dockerfile | 7 +++++-- source/stack/docker-dev/Dockerfile | 10 ++++++++-- source/stack/docker-serve/Dockerfile | 3 +++ source/stack/full/Dockerfile | 3 +++ 6 files changed, 24 insertions(+), 5 deletions(-) diff --git a/.dockerignore b/.dockerignore index 645eeaf..be0bbed 100644 --- a/.dockerignore +++ b/.dockerignore @@ -3,6 +3,7 @@ runtime node_modules *.sock +docker-dev +docker-dev-data .docker-dev-sync .docker-dev.env -source/stack/ diff --git a/source/stack/author/Dockerfile b/source/stack/author/Dockerfile index 51a33a2..3259aab 100644 --- a/source/stack/author/Dockerfile +++ b/source/stack/author/Dockerfile @@ -11,6 +11,9 @@ RUN composer install --no-dev --no-interaction --no-scripts --no-autoloader # 将当前目录下的文件拷贝到工作目录 COPY . /var/www/html +# B-route: build context 为仓库根,模式配置在 source/stack//source/docker/ +RUN rm -rf /var/www/html/source/docker && ln -sf /var/www/html/source/stack/author/source/docker /var/www/html/source/docker + # 生成自动加载文件 RUN composer dump-autoload --optimize --no-dev --classmap-authoritative diff --git a/source/stack/docker-dev-sync/Dockerfile b/source/stack/docker-dev-sync/Dockerfile index cafdf20..a0c0c51 100644 --- a/source/stack/docker-dev-sync/Dockerfile +++ b/source/stack/docker-dev-sync/Dockerfile @@ -56,6 +56,9 @@ RUN composer install --no-interaction --no-scripts # Copy all files to working directory COPY . /var/www/html +# B-route: build context 为仓库根,模式配置在 source/stack//source/docker/ +RUN rm -rf /var/www/html/source/docker && ln -sf /var/www/html/source/stack/docker-dev-sync/source/docker /var/www/html/source/docker + # Generate autoloader (without --no-dev optimizations) RUN composer dump-autoload @@ -63,8 +66,8 @@ RUN composer dump-autoload # RUN install-php-extensions @composer # Dev mode PHP config (overrides zz-phprun.ini) -COPY source/docker/zzz-dev.ini /usr/local/etc/php/conf.d/zzz-dev.ini -COPY source/docker/zzz-xdebug.ini /usr/local/etc/php/conf.d/zzz-xdebug.ini +COPY source/stack/docker-dev-sync/source/docker/zzz-dev.ini /usr/local/etc/php/conf.d/zzz-dev.ini +COPY source/stack/docker-dev-sync/source/docker/zzz-xdebug.ini /usr/local/etc/php/conf.d/zzz-xdebug.ini # Create source mount point (host code staging area) RUN mkdir -p /var/www/source diff --git a/source/stack/docker-dev/Dockerfile b/source/stack/docker-dev/Dockerfile index 178d340..d89c337 100644 --- a/source/stack/docker-dev/Dockerfile +++ b/source/stack/docker-dev/Dockerfile @@ -56,6 +56,12 @@ RUN composer install --no-interaction --no-scripts # Copy all files to working directory COPY . /var/www/html +# B-route: build context 为仓库根,模式配置在 source/stack//source/docker/ +# 仓库根有全局 source/docker/(仅基础配置),模式目录内的是超集(含 run.sh、dev 配置) +# 删除全局目录并创建 symlink 指向模式专属配置,让 run.sh 引用的路径能找到文件 +RUN rm -rf /var/www/html/source/docker \ + && ln -sf /var/www/html/source/stack/docker-dev/source/docker /var/www/html/source/docker + # Generate autoloader (without --no-dev optimizations) RUN composer dump-autoload @@ -63,8 +69,8 @@ RUN composer dump-autoload # RUN install-php-extensions @composer # Dev mode PHP config (overrides zz-phprun.ini) -COPY source/docker/zzz-dev.ini /usr/local/etc/php/conf.d/zzz-dev.ini -COPY source/docker/zzz-xdebug.ini /usr/local/etc/php/conf.d/zzz-xdebug.ini +COPY source/stack/docker-dev/source/docker/zzz-dev.ini /usr/local/etc/php/conf.d/zzz-dev.ini +COPY source/stack/docker-dev/source/docker/zzz-xdebug.ini /usr/local/etc/php/conf.d/zzz-xdebug.ini VOLUME /var/www/html/runtime VOLUME /var/www/html/public/storage diff --git a/source/stack/docker-serve/Dockerfile b/source/stack/docker-serve/Dockerfile index 41d26fe..39f71f0 100644 --- a/source/stack/docker-serve/Dockerfile +++ b/source/stack/docker-serve/Dockerfile @@ -11,6 +11,9 @@ RUN composer install --no-dev --no-interaction --no-scripts --no-autoloader # 将当前目录下的文件拷贝到工作目录 COPY . /var/www/html +# B-route: build context 为仓库根,模式配置在 source/stack//source/docker/ +RUN rm -rf /var/www/html/source/docker && ln -sf /var/www/html/source/stack/docker-serve/source/docker /var/www/html/source/docker + # 生成自动加载文件 RUN composer dump-autoload --optimize --no-dev --classmap-authoritative diff --git a/source/stack/full/Dockerfile b/source/stack/full/Dockerfile index 281bb89..92bd331 100644 --- a/source/stack/full/Dockerfile +++ b/source/stack/full/Dockerfile @@ -55,6 +55,9 @@ RUN composer install --no-dev --no-interaction --no-scripts --no-autoloader # 将当前目录下的文件拷贝到工作目录 COPY . /var/www/html +# B-route: build context 为仓库根,模式配置在 source/stack//source/docker/ +RUN rm -rf /var/www/html/source/docker && ln -sf /var/www/html/source/stack/full/source/docker /var/www/html/source/docker + # 生成自动加载文件 RUN composer dump-autoload --optimize --no-dev --classmap-authoritative