Symfony是一个流行的PHP框架,使用Docker可以简化其安装和环境配置过程。本教程将指导您如何使用Docker容器来安装和运行Symfony应用。
首先,使用Composer创建一个新的Symfony项目:
docker run --rm -v $(pwd):/app composer create-project symfony/skeleton my-symfony-app
这将创建一个名为my-symfony-app
的新Symfony项目。
进入项目目录并创建必要的Docker文件:
cd my-symfony-app
Dockerfile
# Dockerfile
FROM php:8.2-fpm
# 安装必要的PHP扩展
RUN apt-get update && apt-get install -y \
git \
zip \
unzip \
libzip-dev \
libpq-dev \
&& docker-php-ext-install zip pdo pdo_mysql
# 安装Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
WORKDIR /var/www
docker-compose.yml
version: '3.8'
services:
app:
build: .
volumes:
- .:/var/www
depends_on:
- db
- redis
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
redis:
image: redis:alpine
ports:
- "6379:6379"
nginx:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- .:/var/www
- ./docker/nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
volumes:
mysql_data:
创建docker/nginx.conf
文件:
server {
listen 80;
index index.php;
server_name localhost;
root /var/www/public;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass app: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 app composer install
编辑.env
文件,更新数据库配置部分:
DATABASE_URL="mysql://symfony:symfony@db:3306/symfony?serverVersion=8.0"
docker-compose exec app php bin/console doctrine:database:create
docker-compose exec app php bin/console doctrine:migrations:migrate
现在您可以通过浏览器访问Symfony应用: http://localhost:8080
docker-compose down
docker-compose up -d
docker-compose exec app bash
docker-compose logs -f
docker-compose exec app curl -sS https://get.symfony.com/cli/installer | bash
docker-compose exec app mv /root/.symfony5/bin/symfony /usr/local/bin/symfony
docker-compose exec app composer require symfony/webpack-encore-bundle
docker-compose exec app yarn install
docker-compose exec app yarn encore dev --watch
docker-compose.yml
中的端口映射bash
docker-compose exec app chown -R www-data:www-data var
.env
中的数据库配置与docker-compose.yml
中的一致现在您已经成功使用Docker安装了Symfony应用!