Symfony 是一个流行的 PHP 框架,使用 Docker 可以快速搭建开发环境,避免本地环境配置的复杂性。以下是使用 Docker 安装 Symfony 的完整指南。
# 使用 Composer 创建新的 Symfony 项目
composer create-project symfony/website-skeleton my-project
# 或者使用 Symfony CLI
symfony new my-project --full
Symfony 官方提供了 Docker 配置模板:
cd my-project
composer require symfony/docker
这会添加以下文件:
- docker-compose.yaml
- Docker Compose 配置文件
- Dockerfile
- PHP 容器的 Dockerfile
- .docker/
- 包含 Nginx 和 PHP-FPM 配置的目录
docker-compose up -d
打开浏览器访问 http://localhost:8000
如果你需要更多自定义选项,可以手动配置 Docker。
docker-compose.yaml
version: '3.8'
services:
php:
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/var/www/html
depends_on:
- mysql
- redis
nginx:
image: nginx:alpine
ports:
- "8000:80"
volumes:
- .:/var/www/html
- ./docker/nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
mysql:
image: mysql:5.7
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
ports:
- "6379:6379"
volumes:
mysql_data:
Dockerfile
FROM php:8.1-fpm
# 安装系统依赖
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip
# 安装 PHP 扩展
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
# 安装 Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# 设置工作目录
WORKDIR /var/www/html
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 --build
如果遇到文件权限问题,可以运行:
docker-compose exec php chown -R www-data:www-data var
在 .env
文件中配置数据库连接:
DATABASE_URL="mysql://symfony:symfony@mysql:3306/symfony?serverVersion=5.7"
如果需要额外组件,可以在 PHP 容器中运行:
docker-compose exec php composer require [package-name]
运行命令:在 PHP 容器中执行 Symfony 命令
docker-compose exec php bin/console make:controller
查看日志:
docker-compose logs -f
停止服务:
docker-compose down
使用 Docker 搭建 Symfony 环境可以确保开发、测试和生产环境的一致性,大大简化了团队协作和部署流程。