diff --git a/source/stack/docker-dev/Dockerfile b/source/stack/docker-dev/Dockerfile index d89c337..c7eb45d 100644 --- a/source/stack/docker-dev/Dockerfile +++ b/source/stack/docker-dev/Dockerfile @@ -83,9 +83,10 @@ VOLUME /var/www/html/storage # Expose Nginx port EXPOSE 8000 -RUN chmod +x /var/www/html/source/docker/run.sh +# B-route bind mount 模式:ENTRYPOINT 必须用完整路径(build 期 symlink 被 bind mount 覆盖) +RUN chmod +x /var/www/html/source/stack/docker-dev/source/docker/run.sh # Start Nginx and PHP-FPM -ENTRYPOINT ["/bin/bash", "/var/www/html/source/docker/run.sh"] +ENTRYPOINT ["/bin/bash", "/var/www/html/source/stack/docker-dev/source/docker/run.sh"] CMD ["server"] diff --git a/source/stack/docker-dev/source/docker/nginx.conf b/source/stack/docker-dev/source/docker/nginx.conf new file mode 100644 index 0000000..801249e --- /dev/null +++ b/source/stack/docker-dev/source/docker/nginx.conf @@ -0,0 +1,30 @@ + +server { + listen 8000 default_server; + listen [::]:8000 default_server; + + root /var/www/html/public; + index index.php index.html index.htm; + + server_name _; + + # 上传大小不限制 + client_max_body_size 8192m; + + # 运行时长不限制 + fastcgi_read_timeout 60000; + + location / { + if (!-e $request_filename) { + rewrite ^(.*)$ /index.php?s=$1 last; break; + } + + } + + location ~ \.php$ { + include fastcgi_params; + fastcgi_pass 127.0.0.1:9000; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $fastcgi_path_info; + } +} diff --git a/source/stack/docker-dev/source/docker/run.sh b/source/stack/docker-dev/source/docker/run.sh index b7f54be..21d57a6 100644 --- a/source/stack/docker-dev/source/docker/run.sh +++ b/source/stack/docker-dev/source/docker/run.sh @@ -1,16 +1,19 @@ #!/bin/bash +# 自动检测脚本所在目录(B-route 兼容:bind mount 下路径为 source/stack//source/docker/) +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + # 将代码中的nginx复制到nginx配置文件中 -cp /var/www/html/source/docker/nginx.conf /etc/nginx/sites-available/default +cp "$SCRIPT_DIR/nginx.conf" /etc/nginx/sites-available/default ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default # 将代码中的php配置文件复制到php配置文件中 -cp /var/www/html/source/docker/zz-phprun.ini /usr/local/etc/php/conf.d -cp /var/www/html/source/docker/zz-phpfpm.conf /usr/local/etc/php-fpm.d +cp "$SCRIPT_DIR/zz-phprun.ini" /usr/local/etc/php/conf.d +cp "$SCRIPT_DIR/zz-phpfpm.conf" /usr/local/php-fpm.d # 开发模式:覆盖生产PHP配置(Opcache、错误显示、Xdebug) -cp /var/www/html/source/docker/zzz-dev.ini /usr/local/etc/php/conf.d -cp /var/www/html/source/docker/zzz-xdebug.ini /usr/local/etc/php/conf.d +cp "$SCRIPT_DIR/zzz-dev.ini" /usr/local/etc/php/conf.d +cp "$SCRIPT_DIR/zzz-xdebug.ini" /usr/local/etc/php/conf.d # 设置目录权限,确保挂载卷后依然有效 diff --git a/source/stack/docker-dev/source/docker/zz-phpfpm.conf b/source/stack/docker-dev/source/docker/zz-phpfpm.conf new file mode 100644 index 0000000..a145c68 --- /dev/null +++ b/source/stack/docker-dev/source/docker/zz-phpfpm.conf @@ -0,0 +1,8 @@ + +[www] +; 进程数不限制 +pm = dynamic +pm.max_children = 150 +pm.start_servers = 10 +pm.min_spare_servers = 10 +pm.max_spare_servers = 30 \ No newline at end of file diff --git a/source/stack/docker-dev/source/docker/zz-phprun.ini b/source/stack/docker-dev/source/docker/zz-phprun.ini new file mode 100644 index 0000000..a810c16 --- /dev/null +++ b/source/stack/docker-dev/source/docker/zz-phprun.ini @@ -0,0 +1,26 @@ +; 内存不限制 +memory_limit = -1 + +; 上传文件大小不限制 +upload_max_filesize = -1 + +; 运行时长不限制 +max_execution_time = 0 + +; POST大小不限制 +post_max_size = -1 + +; 设置时区 + date.timezone = "Asia/Shanghai" + + +[Zend Opcache] +opcache.enable = 1 +opcache.memory_consumption=128 +opcache.interned_strings_buffer=32 +opcache.max_accelerated_files=80000 +opcache.revalidate_freq=3 +opcache.fast_shutdown=1 +opcache.enable_cli=1 +opcache.jit_buffer_size=128m +opcache.jit=1205 \ No newline at end of file