使用Docker可以快速搭建Symfony开发环境,无需在本地安装PHP、Web服务器和数据库等组件。以下是完整的安装步骤。
mkdir symfony-project
cd symfony-project
创建docker-compose.yaml
文件:
version: '3.8'
services:
php:
image: php:8.2-fpm
container_name: symfony_php
volumes:
- .:/var/www/html
working_dir: /var/www/html
depends_on:
- mysql
- redis
nginx:
image: nginx:alpine
container_name: symfony_nginx
ports:
- "8080:80"
volumes:
- .:/var/www/html
- ./docker/nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
mysql:
image: mysql:8.0
container_name: symfony_mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: symfony
MYSQL_USER: symfony
MYSQL_PASSWORD: symfony
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
redis:
image: redis:alpine
container_name: symfony_redis
ports:
- "6379:6379"
mailhog:
image: mailhog/mailhog
container_name: symfony_mailhog
ports:
- "8025:8025"
volumes:
mysql_data:
创建docker/nginx.conf
文件:
server {
listen 80;
index index.php index.html;
server_name localhost;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
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;
}
}
docker-compose up -d
进入PHP容器安装Symfony:
docker exec -it symfony_php bash
在容器内执行:
# 安装Composer
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# 创建新的Symfony项目
composer create-project symfony/website-skeleton .
# 安装常用包
composer require symfony/maker-bundle --dev
composer require annotations
composer require twig
composer require symfony/orm-pack
composer require --dev symfony/profiler-pack
编辑.env
文件:
DATABASE_URL="mysql://symfony:symfony@mysql:3306/symfony?serverVersion=8.0"
docker exec -it symfony_php bash
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate
打开浏览器访问:http://localhost:8080
编辑docker-compose.yaml
,在php服务下添加:
environment:
XDEBUG_MODE: debug
XDEBUG_CONFIG: client_host=host.docker.internal
然后重建容器:
docker-compose down
docker-compose up -d --build
进入PHP容器安装Xdebug:
docker exec -it symfony_php bash
pecl install xdebug
docker-php-ext-enable xdebug
docker-compose up -d
docker-compose down
docker-compose logs -f
docker exec -it symfony_php bash
docker exec symfony_php php bin/console [command]
docker-compose.yaml
中修改端口映射.env
中的连接字符串正确通过以上步骤,您已经成功使用Docker搭建了Symfony开发环境,可以开始Symfony应用开发了。