Symfony是一个流行的PHP框架,结合Docker可以快速搭建隔离的开发环境。本指南将详细介绍如何使用Docker容器化Symfony应用。
安装Docker和Docker Compose
验证安装
docker --version
docker-compose --version
# Linux/macOS
curl -sS https://get.symfony.com/cli/installer | bash
# 或使用Homebrew
brew install symfony-cli/tap/symfony-cli
# Windows
# 下载并安装 https://get.symfony.com/cli/symfony.exe
symfony new my_project --webapp
cd my_project
在项目根目录创建docker-compose.yaml
文件:
version: '3.8'
services:
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
php:
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/var/www/html
depends_on:
- db
nginx:
image: nginx:alpine
ports:
- "8000:80"
volumes:
- .:/var/www/html
- ./docker/nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
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
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
WORKDIR /var/www/html
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN chown -R www-data:www-data /var/www/html
创建docker/nginx.conf
:
server {
listen 80;
server_name localhost;
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;
}
error_log /var/log/nginx/project_error.log;
access_log /var/log/nginx/project_access.log;
}
docker-compose up -d --build
docker-compose exec php composer install
打开浏览器访问:http://localhost:8000
Symfony提供了官方Docker镜像,可以更简单地设置:
composer create-project symfony/website-skeleton my_project
cd my_project
git clone https://github.com/dunglas/symfony-docker
cd symfony-docker
cp .env .env.local
编辑.env.local
,根据需要修改配置。
docker-compose up -d
docker-compose exec php composer install
默认端口为8000:http://localhost:8000
如果遇到文件权限问题,可以运行:
docker-compose exec php chown -R www-data:www-data var
检查.env
文件中的数据库配置:
DATABASE_URL="mysql://symfony:symfony@db:3306/symfony?serverVersion=8.0"
确保缓存和日志目录可写:
mkdir -p var/cache var/log
chmod -R 777 var/cache var/log
运行命令:
docker-compose exec php bin/console [command]
查看日志:
docker-compose logs -f
停止服务:
docker-compose down
重建服务(修改配置后):
docker-compose up -d --build
.env.prod
文件通过以上步骤,您已经成功使用Docker搭建了Symfony开发环境,可以开始高效开发了!