Symfony是一个流行的PHP框架,使用Docker可以快速搭建其开发环境,避免本地环境配置的复杂性。本指南将带你通过Docker快速安装Symfony并配置完整的开发环境。
mkdir symfony-project && cd symfony-project
创建docker-compose.yml
文件:
version: '3.8'
services:
php:
image: php:8.2-fpm
container_name: symfony_php
working_dir: /var/www
volumes:
- ./:/var/www
depends_on:
- db
- redis
networks:
- symfony_network
nginx:
image: nginx:alpine
container_name: symfony_nginx
ports:
- "8080:80"
volumes:
- ./:/var/www
- ./docker/nginx/conf.d:/etc/nginx/conf.d
depends_on:
- php
networks:
- symfony_network
db:
image: mysql:8.0
container_name: symfony_db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: symfony
MYSQL_USER: symfony
MYSQL_PASSWORD: symfony
volumes:
- db_data:/var/lib/mysql
ports:
- "3306:3306"
networks:
- symfony_network
redis:
image: redis:alpine
container_name: symfony_redis
ports:
- "6379:6379"
networks:
- symfony_network
mailhog:
image: mailhog/mailhog
container_name: symfony_mailhog
ports:
- "8025:8025"
networks:
- symfony_network
volumes:
db_data:
networks:
symfony_network:
driver: bridge
创建目录和配置文件:
mkdir -p docker/nginx/conf.d
创建docker/nginx/conf.d/symfony.conf
文件:
server {
listen 80;
server_name localhost;
root /var/www/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/symfony_error.log;
access_log /var/log/nginx/symfony_access.log;
}
docker-compose up -d
进入PHP容器:
docker exec -it symfony_php bash
在容器内安装Symfony CLI工具并创建新项目:
curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.deb.sh' | bash
apt install symfony-cli
symfony new . --full
或者使用Composer创建项目:
composer create-project symfony/website-skeleton .
在PHP容器内运行:
docker-php-ext-install pdo pdo_mysql
pecl install redis && docker-php-ext-enable redis
编辑.env
文件:
DATABASE_URL="mysql://symfony:symfony@db:3306/symfony?serverVersion=8.0"
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate
docker-compose up -d
docker-compose down
docker-compose logs -f
docker exec -it symfony_php bash
php bin/console cache:clear
http://localhost:8080
应该看到Symfony欢迎页面http://localhost:8025
可以查看Mailhog邮件界面Xdebug配置(可选):
bash
pecl install xdebug
docker-php-ext-enable xdebug
php.ini
中添加Xdebug配置Composer加速:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
Git忽略文件:
确保将vendor/
和.env
添加到.gitignore
端口冲突:
docker-compose.yml
中的端口映射权限问题:
chmod -R 777 var/
数据库连接失败:
.env
中的数据库配置是否正确通过以上步骤,你已经成功使用Docker搭建了一个完整的Symfony开发环境,可以开始你的Symfony项目开发了!