Symfony是一个流行的PHP框架,使用Docker可以快速搭建开发环境,避免本地环境配置的复杂性。以下是使用Docker安装Symfony的详细步骤。
curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.alpine.sh' | sudo sh
sudo apk add symfony-cli
对于其他系统,请参考Symfony官方文档
symfony new my_project --webapp
--webapp
选项会安装一个带有Web配置的Symfony应用(包含前端资产)
cd my_project
symfony server:start -d
composer create-project symfony/skeleton:"6.4.*" my_project
cd my_project
创建docker-compose.yaml
文件:
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./:/var/www/html
- ./docker/nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
php:
build:
context: .
dockerfile: docker/php/Dockerfile
volumes:
- ./:/var/www/html
environment:
- APP_ENV=dev
db:
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
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/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/php/Dockerfile
文件:
FROM php:8.2-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
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html
docker-compose up -d
docker-compose exec php composer install
访问 http://localhost:8080
应该能看到Symfony欢迎页面。
docker-compose down
docker-compose ps
docker-compose exec php bash
docker-compose exec php bin/console cache:clear
如果需要使用数据库,修改.env
文件:
DATABASE_URL="mysql://symfony:symfony@db:3306/symfony?serverVersion=5.7"
然后运行迁移:
docker-compose exec php bin/console doctrine:migrations:migrate
这样你就有了一个完整的Symfony开发环境,可以开始你的项目开发了!