Docker部署Symfony无法显示启动页 报Composer文件找不到错误
Docker部署Symfony路径配置修正方案
核心问题
你当前配置的核心错误是本地Symfony项目代码未正确挂载到php-fpm、nginx容器的对应工作目录,导致Composer在默认的/var/www路径下找不到项目的composer.json文件,同时Nginx也无法匹配到Symfony的入口文件。
具体修正步骤
1. 修改docker-compose.yml的挂载配置
假设你的Symfony项目代码存放在宿主机当前目录的api文件夹下(和docker目录同级,包含composer.json),需要将该目录挂载到两个服务的/var/www路径:
- 找到
php-fpm服务的volumes配置,替换原有的- /api为:
volumes: - ./api:/var/www:rw,cached
- 找到
nginx服务的volumes配置,替换原有的- /api为:
volumes: - ./api:/var/www:rw,cached - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf - ./docker/nginx/sites/:/etc/nginx/sites-available - ./docker/nginx/conf.d/:/etc/nginx/conf.d - ./docker/logs:/var/log
可选优化:在docker/php-fpm/Dockerfile中添加WORKDIR /var/www,指定php容器的默认工作目录
2. 调整Nginx站点配置
Symfony的入口文件存放在项目根目录下的public文件夹中,需要在docker/nginx/sites/下的站点配置文件(一般为default.conf)中指定正确的根路径,参考配置如下:
server { listen 80; server_name localhost; root /var/www/public; index index.php; location / { try_files $uri /index.php$is_args$args; } location ~ ^/index\.php(/|$) { fastcgi_pass php-fpm:9000; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; internal; } location ~ \.php$ { return 404; } }
3. 重启容器生效
修改完成后执行以下命令重建容器:docker-compose down && docker-compose up -d --build
容器启动完成后访问localhost即可看到Symfony默认启动页。
内容的提问来源于stack exchange,提问作者kjod
相关产品推荐
相关产品推荐

