使用 Docker 安装 Symfony 可以快速搭建开发环境,避免本地环境配置的复杂性。以下是使用 Docker 快速安装 Symfony 框架的详细步骤。
mkdir symfony-docker-project
cd symfony-docker-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:
- mysql
- redis
nginx:
image: nginx:alpine
container_name: symfony_nginx
ports:
- "8080:80"
volumes:
- ./:/var/www
- ./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"
composer:
image: composer:2
container_name: symfony_composer
volumes:
- ./:/var/www
working_dir: /var/www
entrypoint: ['composer']
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/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;
}
}
运行以下命令创建新的 Symfony 项目:
docker-compose run --rm composer create-project symfony/skeleton .
docker-compose up -d
如果需要完整 Web 应用功能,可以安装:
docker-compose run --rm composer require webapp
打开浏览器访问:http://localhost:8080
docker-compose down
docker-compose ps
docker-compose exec php bash
docker-compose run --rm composer [command]
docker-compose logs [service]
编辑 .env
文件:
DATABASE_URL="mysql://symfony:symfony@mysql:3306/symfony?serverVersion=8.0"
权限问题:
sudo chown -R $USER:$USER .
端口冲突:
修改 docker-compose.yml
中的端口映射
PHP 扩展缺失:
创建自定义 Dockerfile 或使用 docker-php-ext-install
安装所需扩展
缓存目录不可写:
docker-compose exec php chmod -R 777 var/
使用 Docker 安装 Symfony 可以快速搭建一致的开发环境,避免"在我机器上能运行"的问题。这种方法特别适合团队协作和持续集成环境。