如何让Docker将Symfony项目的public目录设为Web服务器根目录
解决Docker中Symfony根目录指向问题
要让Web服务器直接指向/var/www/html/public且保持项目文件结构不变,核心是修改Web服务器的根目录配置,以下分两种常见环境给出操作步骤:
Apache环境(基于php-apache镜像)
- 项目根目录新建
apache.conf配置文件:<VirtualHost *:80> DocumentRoot /var/www/html/public <Directory /var/www/html/public> AllowOverride All Require all granted DirectoryIndex index.php </Directory> </VirtualHost> - 修改项目的Dockerfile,替换默认Apache站点配置并启用rewrite模块:
FROM php:8.2-apache # 保留你原有的依赖安装命令(如composer、PHP扩展等) COPY apache.conf /etc/apache2/sites-available/000-default.conf RUN a2enmod rewrite - 重新构建镜像并启动容器:
docker-compose up --build
Nginx环境(搭配php-fpm镜像)
- 项目根目录新建
nginx.conf配置文件:server { listen 80; root /var/www/html/public; index index.php index.html; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } - 调整Docker Compose配置,新增Nginx服务并修改php服务为fpm镜像:
version: '3' services: php: container_name: php depends_on: - db build: . volumes: - .:/var/www/html restart: always nginx: container_name: nginx image: nginx:alpine depends_on: - php volumes: - .:/var/www/html - ./nginx.conf:/etc/nginx/conf.d/default.conf ports: - "8001:80" restart: always - 注意:php的Dockerfile要基于
php:8.2-fpm镜像,同时安装Symfony所需的PHP扩展。
完成后访问http://localhost:8001即可直接进入Symfony项目首页,你之前找的术语就是Web服务器根目录配置,对应Apache的DocumentRoot或Nginx的root指令。
内容的提问来源于stack exchange,提问作者Orange Lux
相关产品推荐
相关产品推荐

