使用Docker Compose将之前使用Docker搭建的PHP开发环境进行编排。
什么是Docker Compose?
Docker Compose是Docker官方编排项目之一,可以快速部署应用。
其使用一个单独的YAML文件(docker-compose.yml)来定义一组相关联的应用容器为一个项目。
Docker Compose不是必须使用的,你也可以只使用Docker来构建项目。Docker Compose只是提供一种更简单方便的方式来管理应用容器。
编排PHP开发环境
version: "3"
## 网络
networks:
frontend:
driver: bridge
backend:
driver: bridge
services:
## PHP-FPM
php-fpm:
container_name: alan_php-fpm # 容器名
build:
context: ./php-fpm
volumes:
- ${WEBSITES_DIR}:/home/www # 站点目录
- ${PHP_FPM_LOG_DIR}:/var/log/php-fpm # php-fpm日志
- ${PHP_FPM_INI}:/usr/local/etc/php # php-fpm配置文件
ports:
- "${PHP_FPM_PORT}:9000" # php-fpm端口
- "${SWOFT_PORT}:18306" # 预留swoft端口
networks:
- backend
## Nginx
nginx:
container_name: alan_nginx # 容器名
build:
context: ./nginx
volumes:
- ${WEBSITES_DIR}:/home/www # 站点目录
- ${NGINX_LOG_DIR}:/var/log/nginx # Nginx日志
- ${NGINX_CONF}:/etc/nginx/conf.d # Nginx配置文件
ports:
- "${NGINX_PORT}:80" # Nginx端口
depends_on:
- php-fpm # 依赖与php-fpm
networks:
- frontend
- backend
## MySQL
mysql:
container_name: alan_mysql # 容器名
build:
context: ./mysql
volumes:
- ${MYSQL_DATA}:/var/lib/mysql # MySQL数据存储位置
- ${MYSQL_CONF}:/etc/mysql/conf.d # MySQL配置文件
ports:
- "${MYSQL_PORT}:3306" # MySQL端口
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} # MySQL的root密码
MYSQL_USER: ${MYSQL_USER} # MySQL用户
MYSQL_PASSWORD: ${MYSQL_PASSWORD} # MySQL密码
MYSQL_ALLOW_EMPTY_PASSWORD: ${MYSQL_ALLOW_EMPTY_PASSWORD} # 是否允许空密码
networks:
- backend
## Redis
redis:
container_name: alan_redis #容器名
build:
context: ./redis
ports:
- "${REDIS_PORT}:6379" # Redis端口
networks:
- backend
其中的变量(例如:${REDIS_PORT})可以在.env文件中进行自定义。
ENV环境变量文件示例
.env配置文件的样例:
# web站点目录
WEBSITES_DIR=./www
## PHP-FPM
# PHP-FPM日志
PHP_FPM_LOG_DIR=./logs/php-fpm
# PHP-FPM配置
PHP_FPM_INI=./php-fpm/php
# PHP-FPM端口
PHP_FPM_PORT=9000
# SWOFT端口
SWOFT_PORT=18306
## Nginx
# Nginx日志
NGINX_LOG_DIR=./logs/nginx
# Nginx配置
NGINX_CONF=./nginx/sites
# Nginx端口
NGINX_PORT=8081
## MySQL
# MySQL数据
MYSQL_DATA=./data
# MySQL配置
MYSQL_CONF=./mysql/conf.d
# MySQL端口
MYSQL_PORT=3306
## Redis
# Redis端口
REDIS_PORT=6379