Symfony是一个流行的PHP框架,结合Docker使用可以简化开发环境的配置。以下是详细的安装步骤:
确保已安装: - Docker - Docker Compose
mkdir symfony-docker-project
cd symfony-docker-project
version: '3.8'
services:
php:
build:
context: .
target: symfony_php
args:
SYMFONY_VERSION: 6.3.*
container_name: symfony_app
working_dir: /var/www
volumes:
- ./:/var/www
depends_on:
- mysql
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
volumes:
mysql_data:
FROM php:8.2-fpm-alpine AS symfony_php
ARG SYMFONY_VERSION=6.3.*
RUN apk add --no-cache \
acl \
fcgi \
file \
gettext \
git \
mysql-client \
unzip \
libzip-dev \
libpng-dev \
libjpeg-turbo-dev \
freetype-dev \
icu-dev
RUN docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-install -j$(nproc) gd pdo pdo_mysql zip intl opcache
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
WORKDIR /var/www
# 安装Symfony CLI (可选)
RUN wget https://get.symfony.com/cli/installer -O - | bash && \
mv /root/.symfony5/bin/symfony /usr/local/bin/symfony
# 创建项目
RUN composer create-project symfony/skeleton:"${SYMFONY_VERSION}" .
RUN chown -R www-data:www-data /var/www
server {
listen 80;
server_name localhost;
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;
}
error_log /var/log/nginx/project_error.log;
access_log /var/log/nginx/project_access.log;
}
docker-compose up -d --build
如果Dockerfile中没有自动创建项目,可以进入容器手动安装:
docker exec -it symfony_app bash
# 在容器内执行
composer create-project symfony/skeleton .
编辑.env
文件:
DATABASE_URL="mysql://symfony:symfony@mysql:3306/symfony?serverVersion=8.0"
访问 http://localhost:8080
应该能看到Symfony欢迎页面。
docker exec -it symfony_app composer require symfony/maker-bundle --dev
docker exec -it symfony_app composer require annotations
docker exec -it symfony_app composer require twig
docker exec -it symfony_app composer require security
如果安装了Symfony CLI,可以运行:
docker exec -it symfony_app symfony server:start
权限问题:
docker exec -it symfony_app chown -R www-data:www-data /var/www
端口冲突:
修改docker-compose.yml
中的端口映射
数据库连接失败: 确保MySQL容器完全启动后再尝试连接,可以增加健康检查
通过以上步骤,您应该能够在Docker环境中成功安装并运行Symfony框架。