Doker:最新docker-compose操作
1. docker compose说明
目前docker新版本已经集成docker compose工具,直接使用"docker compose"命令就可以操作
2. docker-compose.yml文件说明
docker compose命令的运行需要docker-compose.yml文件的支持,可以指定文件位置,也可以在文件同目录运行命令
docker-compose.yml 示例文件
version: "3.8"
networks:
my_net:
name: my_net
ipam:
config:
- subnet: 172.19.8.0/24
services:
mysql:
container_name: sc-mysql
image: mysql:8
restart: always
environment:
TZ: Asia/Shanghaidoc # 配置时间为上海时间
MYSQL_ROOT_PASSWORD: sc@123456 # 配置mysql密码
MYSQL_ROOT_HOST: '%' # 设置用户开启远程连接
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "10" # 设置日志文件个数
ports:
- 13306:3306
networks:
my_net:
ipv4_address: 172.19.8.100
command: [
'--character-set-server=utf8mb4', # 设置库的字符集
'--collation-server=utf8mb4_general_ci', # 默认排序方式
'--default-authentication-plugin=mysql_native_password' # 远程登录密码与用户设置的密码一致
]
volumes:
- /home/mysql/data:/var/lib/mysql # 挂载mysql数据
- /home/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf # 挂载mysql配置文件
healthcheck: # 验证服务是否健康
test: mysql --user=root --password=sc@123456 -e 'select * from ry.gen_table_column' # 检测命令,测试是否可以连接
interval: 3s # 健康检查的间隔,默认为30秒 单位(h/m/s)
timeout: 5s # 检测命令运行的超时时长,超时就认定这次检测为失败,单位(h/m/s)
retries: 5 # 检测次数,连续失败指定次数后,容器状态视为 unhealthy
nacos:
container_name: sc-nacos
image: nacos/nacos-server:v2.2.0
restart:
# 最多重启10次
on-failure: 10
links:
- mysql:db
environment:
PREFER_HOST_MODE: hostname
MODE: standalone
SPRING_DATASOURCE_PLATFORM: mysql
MYSQL_SERVICE_HOST: 172.19.8.100
MYSQL_SERVICE_PORT: 3306
MYSQL_SERVICE_DB_NAME: nacos_config
MYSQL_SERVICE_USER: root
MYSQL_SERVICE_PASSWORD: sc@123456
MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "10"
ports:
- 8848:8848
- 9848:9848
- 9849:9849
networks:
higentec_net:
ipv4_address: 172.19.8.102
depends_on:
mysql:
condition: service_healthy
system:
container_name: base-system
build:
context: /home/compose/service/
dockerfile: DockerFile-system
restart: always
ports:
- 9206:9206
networks:
my_net:
ipv4_address: 172.19.8.206
depends_on: # 配置启动顺序
mysql: # 服务名
condition: service_healthy # 判断条件:服务是否健康
version
compose文件格式版本,主要有3个版本(1.X、2.X、3.X)
networks
配置自定义网段,配置之前需要查看docker当前网段有那些,不能重复配置
networks : my_net
自定义网段名称,用于后续容器配置网段
networks : name
指定自定义网段名称,用于后续容器配置网段
networks : ipam : config : - subnet
指定网段
services
services下面就是需要构建和启动的镜像服务
services : 自定义名称
自定义名称mysql,用于compose管理服务的名称,不是容器名称;每个服务第一行都要有名称
services : 自定义名称 : container_name
自定义容器名称,用于docker容器管理的自定义名称
services : 自定义名称 : image
指定镜像创建并启动容器,每个服务运行方式只能通过image与build二选一
services : 自定义名称 : build
通过Dockerfile文件构建镜像并启动容器,每个服务运行方式只能通过image与build二选一
services : 自定义名称 : build : context
指定Dockerfile文件的路径,是目录路径不是文件路径
services : 自定义名称 : build : dockerfile
指定Dockerfile文件名称,与上面context一起配置,用于查找Dockerfile文件地址
services : 自定义名称 : restart
配置容器自启,restart: always
services : 自定义名称 : restart : on-failure
配置容器最多重启10次,restart: on-failure: 10
services : 自定义名称 : environment
添加环境变量,通过 - 可以设置多个值
services : 自定义名称 : ports
端口映射,通过 - 可以设置多个映射端口,- 2020:2020/tcp - 3425:3425/udp
services : 自定义名称 : networks
配置当前容器服务的ip
services : 自定义名称 : networks : 网段名 : ipv4_address
配置具体网段内的固定ip
services : 自定义名称 : volumes
配置服务文件与宿主机挂载映射
services : 自定义名称 : command
配置容器启动后默认执行的命令
services : 自定义名称 : depends_on
配置容器启动顺序,等待depends_on配置的服务启动后再启动
services : 自定义名称 : depends_on : service配置的自定义服务名
配置容器启动顺序,等待depends_on配置的服务启动后再启动
services : 自定义名称 : depends_on : service配置的自定义服务名 : condition: service_healthy
配置容器启动判断条件,配置服务健康检测
services : 自定义名称 : healthcheck
配置服务健康检测功能
services : 自定义名称 : healthcheck : test
健康检测命令
services : 自定义名称 : healthcheck : interval
健康检测间隔,默认30秒,单位(h/m/s)
services : 自定义名称 : healthcheck : timeout
超时时长,超时则判定这次检测为失败
services : 自定义名称 : healthcheck : retries
健康检测次数
3. 多compose文件共用networks网段
version: "3.8"
networks:
# 共用其他compose的网段
higentec_net:
external: true
services:
..........
4. docker compose常用命令
## 构建镜像并启动文件内配置的所有容器
docker compose up
## 构建镜像并启动所有容器,后台运行
docker compose up -d
## 停止并删除所有容器
docker compose down
## 重启所有服务
docker compose restart
## 启动服务
docker compose start
## 停止服务
docker compose stop
## 展示当前docker compose编排过并运行的所有容器(在docker-compose.yml文件同目录下运行)
docker compose ps
## 检查docker-compose.yml文件
docker compose config
## 检查docker-compose.yml文件,有问题就输出
docker compose config -q
文章转载至:https://blog.csdn.net/pcxiaoke/article/details/130977715