除了以下方法之外,是否可以在Docker-compose中控制启动容器的顺序?
https://docs.docker.com/compose/startup-order/
version: "2"
services:
web:
build: .
ports:
- "80:8000"
depends_on:
- "db"
command: ["./wait-for-it.sh", "db:5432", "--", "python", "app.py"]
db:
image: postgres
我有一个依赖于redis数据库容器的容器。但是,redis加载到内存中需要更长的时间,导致第一个容器退出。现在,我使用always restart方法来解决问题作为一种解决方法。
我想知道是否有更好的选择,因为我会尽量避免等待脚本?
答案 0 :(得分:2)
您可以在redis容器中指定运行状况检查,并将condition: service_healthy
添加到depends_on
字段。这是因为撰写2.1
version: "2.1"
services:
web:
build: .
ports:
- "80:8000"
depends_on:
"db":
condition: service_healthy
command: ["python", "app.py"]
db:
image: postgres
详细使用示例如下:https://github.com/peter-evans/docker-compose-healthcheck/blob/master/docker-compose.yml
答案 1 :(得分:2)
通过在docker compose文件中使用“ depends_on”命令,可以更改容器的启动顺序,并为需要尽早启动的容器赋予优先级。
nginx:
container_name: OTP-Nginx
build:
context: ./nginx
args:
- comapanycode=${COMPANY_CODE}
- dbtype=${DB_TYPE}
ports:
- "80:80"
links:
- db:db
volumes:
- ./nginx/octopus_nginx_params:/etc/nginx/octopus_nginx_params
enabled/retail.octopusdashboard.com
- /home/eleos/octopusupdates/DASHBOARDGLOBAL/branches-cdbwip:/var/www/${COMPANY_CODE}/cdb
depends_on:
- db