Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Docker-Compose的配置文件默认为docker-compose.yml,本文会讲解文件中的配置,会提供常用的容器配置,如:Mysql,Redis,MongoDB,rabbitmq 等容器的配置。
docker-compose安装
- 方式一:通过pip安装
如果你的系统上有python的pip环境,可以通过下面命令直接安装。
pip install docker-compose
# 或者
pip3 install docker-compose
-
方式二:通过下载文件安装
GitHub:github.com/docker/comp…
curl -L https://github.com/docker/compose/releases/download/1.28.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-composelinux环境uname命令可显示电脑和操作系统相关信息。uname -s显示操作系统名称;uname -m显示电脑类型。
安装完成后,查看是否安装成功
docker-compose --version
输出版本说明安装成功。如果安装遇到问题可以留言联系我。
docker-compose.yml 文件说明
由于涉及到的指令配置比较多,所以这里只讲常用的,具体的可以上官网查看详细文档:官方文档地址
version: '3'
services:
# mysql服务
mysql:
# 使用的镜像 --> 镜像名:版本
image: mysql:8.0.16
# 容器名称
container_name: mysql8
# hostname
hostname: mysql8
# 环境变量(多个) --> 环境变量名称: 变量的值
environment:
MYSQL_ROOT_PASSWORD: 123456
TZ: Asia/Shanghai
# 暴露映射端口(多个) --> 宿主机端口:容器内端口
ports:
- 3306:3306
# 解决容器的依赖、启动先后的问题。以下例子中会先启动其他服务再启动mysql
depends_on:
- 其他服务
# 可以链接其他服务
links:
- 其他服务
# 选择自定义网络组
networks:
- custom_net
# 目录挂载(多个) --> 宿主机路径:容器内路径
volumes:
- ./data:/var/lib/mysql
# 容器重启策略 https://blog.csdn.net/qq_34924407/article/details/80802634
# no,默认策略,在容器退出时不重启容器
# on-failure,在容器非正常退出时(退出状态非0),才会重启容器
# on-failure:3,在容器非正常退出时重启容器,最多重启3次
# always,在容器退出时总是重启容器
# unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
restart: on-failure:3
# 执行命令
command: 需要执行的命令
# 自定义网络组配置
networks:
custom_net:
external:
name: app_net
常用的配置指令就上面这些,其他的可以查看官网文档。
docker-compose常用命令
docker-compose -h # 查看帮助
docker-compose up # 创建并运行所有容器
docker-compose up -d # 创建并后台运行所有容器
docker-compose -f docker-compose.yml up -d # 指定模板
docker-compose down # 停止并删除容器、网络、卷、镜像。
docker-compose logs # 查看容器输出日志
docker-compose pull # 拉取依赖镜像
dokcer-compose config # 检查配置
dokcer-compose config -q # 检查配置,有问题才有输出
docker-compose restart # 重启服务
docker-compose start # 启动服务
docker-compose stop # 停止服务
常用的容器配置文件
Mysql
version: '3'
services:
# mysql服务
mysql:
image: mysql:8.0.16
# 容器名称
container_name: mysql8
# hostname
hostname: mysql8
# 环境变量
environment:
MYSQL_ROOT_PASSWORD: 123456
TZ: Asia/Shanghai
# 映射端口
ports:
- 3306:3306
# MySQL数据目录挂在
volumes:
- ./data:/var/lib/mysql
# 容器重启策略 https://blog.csdn.net/qq_34924407/article/details/80802634
restart: on-failure:3
Redis
version: '3'
services:
# redis 服务
redis:
image: redis:latest
container_name: redis
hostname: redis
# 执行命令
command: redis-server /usr/local/etc/redis/redis.conf --appendonly yes
volumes:
# 挂载 Redis数据
- ./data:/data
# 挂载 Redis配置 这里要在同目录准备一个redis.conf文件
- ./redis.conf:/usr/local/etc/redis/redis.conf
ports:
- 6379:6379
# 环境变量
environment:
TZ: Asia/Shanghai
# 容器重启策略
restart: on-failure:3
MangoDB
version: '3'
services:
mongo:
image: mongo:latest
container_name: mongodb
hostname: mongodb
restart: on-failure:3
ports:
- 27017:27017
volumes:
- ./data/db:/data/db
- ./log:/data/log
environment:
MONGO_INITDB_ROOT_USERNAME: codelong
MONGO_INITDB_ROOT_PASSWORD: codelong
TZ: Asia/Shanghai
RabbitMQ
version: '3'
services:
# rabbitmq 服务
rabbitmq:
# 镜像名称
image: rabbitmq:latest
# 容器名称
container_name: rabbitmq
hostname: rabbitmq
#端口映射
ports:
- 5672:5672
- 15672:15672
- 4369:4369
- 25672:25672
#挂载
volumes:
- ./data:/var/lib/rabbitmq
- ./log:/var/log/rabbitmq/log
#环境变量
environment:
- RABBITMQ_DEFAULT_VHOST=codelong_host
- RABBITMQ_DEFAULT_USER=codelong
- RABBITMQ_DEFAULT_PASS=codelong
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
# 容器重启策略
restart: on-failure:3
更多的容器配置会上传到GitHub,这里就不一一列出来了。