Symfony 4 Docker 环境项目教程
1. 项目的目录结构及介绍
symfony-4-docker-env/
├── docker-compose.yml
├── docker/
│ ├── nginx/
│ │ ├── Dockerfile
│ │ └── default.conf
│ ├── php-fpm/
│ │ ├── Dockerfile
│ │ └── php.ini
│ └── mysql/
│ ├── Dockerfile
│ └── my.cnf
├── symfony/
│ ├── bin/
│ ├── config/
│ ├── public/
│ ├── src/
│ ├── templates/
│ ├── tests/
│ ├── translations/
│ ├── var/
│ └── vendor/
├── .env
└── README.md
docker-compose.yml
: Docker Compose 配置文件,定义了服务的运行方式。docker/
: 包含各个服务的Dockerfile和配置文件。nginx/
: Nginx 服务的Dockerfile和配置文件。php-fpm/
: PHP-FPM 服务的Dockerfile和配置文件。mysql/
: MySQL 服务的Dockerfile和配置文件。
symfony/
: Symfony 项目的根目录,包含项目的所有代码和配置。.env
: 环境变量配置文件。README.md
: 项目说明文档。
2. 项目的启动文件介绍
docker-compose.yml
docker-compose.yml
文件是 Docker Compose 的核心配置文件,定义了如何启动和管理多个 Docker 容器。以下是该文件的主要内容:
version: '3'
services:
nginx:
build:
context: ./docker/nginx
ports:
- "80:80"
volumes:
- ./symfony/public:/var/www/html/public
depends_on:
- php-fpm
php-fpm:
build:
context: ./docker/php-fpm
volumes:
- ./symfony:/var/www/html
depends_on:
- mysql
mysql:
build:
context: ./docker/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: symfony
MYSQL_USER: symfony
MYSQL_PASSWORD: symfony
volumes:
- symfony-mysql-data:/var/lib/mysql
volumes:
symfony-mysql-data:
nginx
: 定义了 Nginx 服务的构建上下文、端口映射和卷挂载。php-fpm
: 定义了 PHP-FPM 服务的构建上下文和卷挂载。mysql
: 定义了 MySQL 服务的构建上下文、环境变量和卷挂载。
3. 项目的配置文件介绍
.env
.env
文件用于定义项目的环境变量,以下是该文件的示例内容:
###> blackfire.io secrets ~> replace with yours
BLACKFIRE_CLIENT_ID=
BLACKFIRE_CLIENT_TOKEN=
BLACKFIRE_SERVER_ID=
BLACKFIRE_SERVER_TOKEN=
###< blackfire.io secrets
docker/nginx/default.conf
default.conf
文件是 Nginx 的配置文件,定义了 Nginx 服务的基本配置:
server {
listen 80;
server_name localhost;
root /var/www/html/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
docker/php-fpm/php.ini
php.ini
文件是 PHP-FPM 的配置文件,定义了 PHP 的运行参数:
[PHP]
display_errors = On
error_reporting = E_ALL
docker/mysql/my.cnf
my.cnf
文件是 MySQL 的配置