Docker Compose
yaml 文件指定 command
docker-compose.yaml 内容如下:
yaml
version: "3.0"
services:
demo-test:
container_name: demo-test
image: centos
command: /bin/sh -c "date > /1.txt && cat /1.txt"启动服务,控制台会输出当前时间
sh
docker compose up仅对单个服务 service 进行操作
仅更新 yyd-websocket-service
sh
docker compose pull yyd-websocket-service强制重建 yyd-websocket-service,--no-deps 表示依赖的相关容器不会被重建
sh
docker compose up -d --no-deps --force-recreate yyd-websocket-service获取 docker-compose up 返回状态值
https://github.com/docker/compose/issues/10225
bash
# 在当前目录执行以下命令,不使用--abort-on-container-exit时下面脚本不会执行echo
docker-compose up --abort-on-container-exit || { echo '执行失败'; }设置项目名称
参考
stackoverflow链接
通过
docker-compose.yaml中name属性指定项目名称直接在
docker-compose.yaml中设置name属性yamlversion: "3.0" name: test services: my_busybox: image: busybox command: | sh -c "sleep infinity"通过变量的方式设置
name属性.env文件如下:propertiesprojectName=testdocker-compose.yaml文件如下:yamlversion: "3.0" name: ${projectName} services: my_busybox: image: busybox command: | sh -c "sleep infinity"
通过
.env设置项目名称推荐使用此方式设置项目名称
propertiesCOMPOSE_PROJECT_NAME=mytest通过
docker compose命令-p参数设置项目名称up命令bashdocker compose -p mytest1 up -dps命令bashdocker compose -p mytest1 psdown命令bashdocker compose -p mytest1 down -v
指定或者扩展服务实例的数量
注意:nginx 服务不能指定端口,否则会端口冲突导致不能启动多个实例。
详细用法请参考示例 https://gitee.com/dexterleslie/demonstration/tree/master/docker/demo-docker-compose/docker-compose-replicas.yaml
yaml 文件指定服务实例的数量
通过 yaml 文件的 deploy.replicas 配置多个实例
yaml
version: "3.0"
services:
nginx:
image: nginx
deploy:
# 表示两个实例
replicas: 2
# ports:
# - '80:80'启动
bash
docker compose -f docker-compose-replicas.yaml up -d查看实例数量
bash
docker compose -f docker-compose-replicas.yaml ps手动扩展服务实例的数量
yaml 文件和普通的 yaml 文件一致
yaml
version: "3.0"
services:
nginx:
image: nginx
# ports:
# - '80:80'启动
bash
docker compose -f docker-compose-replicas.yaml up -d手动扩展实例数量
bash
docker compose -f docker-compose-replicas.yaml up -d --scale nginx=3查看实例数量
bash
docker compose -f docker-compose-replicas.yaml pscompose 文件配置
restart 策略
restart 定义平台在容器终止时应用的策略。
- no:默认重启策略。它在任何情况下都不会重启容器。
- always:该策略始终重启容器,直到将其移除。
- on-failure[:max-retries]:如果退出代码指示错误,该策略将重启容器。(可选)限制 Docker 守护程序尝试重启的次数。
- unless-stopped:无论退出代码如何,该策略都会重启容器,但当服务停止或移除时会停止重启。
例如如下配置:
yaml
restart: "no"
restart: always
restart: on-failure
restart: on-failure:3
restart: unless-stopped