Docker为Symfony开发提供了以下优势: - 环境一致性:确保开发、测试和生产环境一致 - 快速配置:几分钟内搭建完整的开发环境 - 隔离性:避免主机系统污染 - 可移植性:轻松分享开发环境配置
确保已安装Docker和Docker Compose:
docker --version
docker-compose --version
docker run --rm -v $(pwd):/app -w /app composer create-project symfony/skeleton:"6.4.*" my_project
composer create-project symfony/skeleton:"6.4.*" my_project
cd my_project
创建docker-compose.yml
文件:
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
ports:
- "8000:8000"
volumes:
- .:/srv/app
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: symfony
MYSQL_USER: symfony
MYSQL_PASSWORD: symfony
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- "8080:80"
environment:
PMA_HOST: db
depends_on:
- db
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
# 设置工作目录
WORKDIR /srv/app
docker-compose up -d --build
# 在主机上安装
curl -sS https://get.symfony.com/cli/installer | bash
mv ~/.symfony5/bin/symfony /usr/local/bin/symfony
# 或者在容器内安装
docker-compose exec app bash -c "curl -sS https://get.symfony.com/cli/installer | bash"
docker-compose exec app symfony server:start --port=8000 --allow-http
修改.env
文件:
DATABASE_URL="mysql://symfony:symfony@db:3306/symfony?serverVersion=8.0"
docker-compose exec app composer require:
annotations
doctrine/orm
form
security-csrf
serializer
twig
validator
maker --dev
profiler --dev
启动服务:
docker-compose up -d
进入容器:
docker-compose exec app bash
运行命令:
# 在容器内
composer require [package]
php bin/console make:controller
停止服务:
docker-compose down
使用Docker卷缓存Composer依赖:
volumes:
- $HOME/.composer/cache:/root/.composer/cache
启用OPcache:
在Dockerfile
中添加:
RUN docker-php-ext-install opcache
使用Nginx代替内置服务器(生产环境):
添加Nginx服务到docker-compose.yml
# 在主机上运行
sudo chown -R $USER:$USER .
修改docker-compose.yml
中的端口映射:
ports:
- "8001:8000"
确保服务名称一致,并使用depends_on
正确声明依赖关系。
对于生产环境,建议: 1. 使用专门的Web服务器(Nginx/Apache) 2. 配置PHP-FPM优化参数 3. 设置适当的Docker资源限制 4. 使用多阶段构建减小镜像大小
通过以上步骤,您已经成功在Docker容器中设置了Symfony开发环境,可以开始高效的应用程序开发了。