Symfony是一个流行的PHP框架,使用Docker可以快速搭建一致的开发环境。以下是创建Symfony开发环境的完整方案:
创建docker-compose.yml
文件:
version: '3.8'
services:
php:
build:
context: .
dockerfile: Dockerfile
volumes:
- ./:/var/www/html
depends_on:
- mysql
- redis
environment:
DATABASE_URL: "mysql://symfony:password@mysql:3306/symfony"
REDIS_URL: "redis://redis"
nginx:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./:/var/www/html
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: symfony
MYSQL_USER: symfony
MYSQL_PASSWORD: password
volumes:
- mysql-data:/var/lib/mysql
ports:
- "3306:3306"
redis:
image: redis:alpine
ports:
- "6379:6379"
mailhog:
image: mailhog/mailhog
ports:
- "8025:8025"
volumes:
mysql-data:
创建Dockerfile
:
FROM php:8.2-fpm
# 安装系统依赖
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip \
libzip-dev
# 安装PHP扩展
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd zip
# 安装Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# 安装Symfony CLI
RUN curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.deb.sh' | bash \
&& apt install symfony-cli
# 设置工作目录
WORKDIR /var/www/html
创建docker/nginx/default.conf
:
server {
listen 80;
server_name localhost;
root /var/www/html/public;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass php: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;
}
error_log /var/log/nginx/project_error.log;
access_log /var/log/nginx/project_access.log;
}
docker-compose up -d mysql redis nginx
docker-compose run --rm php symfony new . --full
或者使用Composer:
docker-compose run --rm php composer create-project symfony/website-skeleton .
.env
文件中的数据库配置:DATABASE_URL="mysql://symfony:password@mysql:3306/symfony?serverVersion=8.0"
docker-compose run --rm php composer require symfony/maker-bundle --dev
docker-compose run --rm php composer require symfony/orm-pack
docker-compose run --rm php composer require symfony/apache-pack
docker-compose up -d
现在可以通过以下URL访问: - 应用: http://localhost:8080 - Mailhog: http://localhost:8025
进入PHP容器:
docker-compose exec php bash
运行Symfony命令:
docker-compose exec php symfony console make:controller
查看日志:
docker-compose logs -f
停止环境:
docker-compose down
如果需要Xdebug调试,可以修改Dockerfile添加:
RUN pecl install xdebug && docker-php-ext-enable xdebug
然后在PHP容器中创建/usr/local/etc/php/conf.d/xdebug.ini
:
zend_extension=xdebug.so
xdebug.mode=debug
xdebug.client_host=host.docker.internal
xdebug.start_with_request=yes
这个配置提供了完整的Symfony开发环境,包括: - PHP 8.2 - Nginx - MySQL 8.0 - Redis - Mailhog (邮件测试工具) - Symfony CLI工具
您可以根据项目需求调整配置,添加更多服务或修改版本号。