Compose介绍
Compose 是用于定义和运行多容器 Docker 应用程序的工具。 通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose的使用步骤
- 使用 Dockerfile 定义应用程序的环境。
- 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
- 最后,执行 docker-compose up 命令来启动并运行整个应用程序。
简单比喻
在一个服务流程中,Dockerfile就好比一个个掌握独特技能的员工,docker-compose.yml就是协调这些员工进行工作的总管,通过协调各员工之间的合作和联系提供一个完整的服务流程。
举个栗子
#-----------------------------------------------
version: '3.2'
# 声明Compose版本为3.2
#-----------------------------------------------
services:
# 声明所用服务都有啥
#----------------------------------------------
nginx:
# 这里使用了一个名为nginx的服务
image: kod-nginx:v1.0
# 这个服务使用的镜像就是kod-nginx:v1.0
container_name: nginx
# 自定义这个容器的名称为nginx
volumes:
- "./www:/data/www"
# 将本地当前目录下的www目录挂载到容器的/data/www目录
- "./nginx/logs:/var/log/nginx"
# 将本地nginx/logs目录挂载到容器的/var/log/nginx目录
ports:
- "443:443"
# 端口映射:将宿主机的443端口映射到容器的443端口
restart: always
# 重启策略:容器退出时总是重启
depends_on:
- php-fpm
# 依赖关系:nginx服务依赖于php-fpm服务
#-----------------------------------------------
mysql:
image: kod-mysql:v1.0
container_name: mysql
volumes:
- "./data/mysql:/var/lib/mysql"
- "./mysql/logs:/var/lib/mysql-logs"
ports:
- "3306:3306"
restart: always
#-----------------------------------------------
redis:
image: kod-redis:v1.0
container_name: redis
ports:
- "6379:6379"
volumes:
- "./data/redis:/data"
- "./redis/redis.conf:/usr/local/etc/redis/redis.conf"
restart: always
command: redis-server /usr/local/etc/redis/redis.conf
# 覆盖默认的启动命令,使用自定义配置文件启动Redis
#-----------------------------------------------
php-fpm:
image: kod-php:v1.0
container_name: php-fpm
ports:
- "8090:80"
restart: always
depends_on:
- redis
- mysql