Chr*_*ord 5 docker docker-compose
我正在使用docker-compose使用docker服务,并且我有一个依赖于花药的服务。
我使用了depends_on
密钥,但是具有依赖项的服务在依赖服务完全启动之前启动。
version: '3'
services:
KeyManager:
image: cjrutherford/keymanager
deploy:
replicas: 1
ports:
- '3220:3220'
networks:
- privnet
YellowDiamond:
image: cjrutherford/server
depends_on:
- KeyManager
deploy:
replicas: 1
ports:
- '3000:3000'
networks:
- privnet
- web
networks:
privnet:
internal: true
web:
Run Code Online (Sandbox Code Playgroud)
这两个都是节点应用程序,要求密钥管理器在服务器启动之前运行以接受请求。我可以添加超时吗?或在应用程序中发送触发器?从经理那里获取钥匙还为时过早。
Dan*_*nyB 24
您可能正在寻找 docker composehealthcheck
和depends_on
.
此功能的行为在 docker-copmose 版本之间发生了变化,因此这里是更新的方法(此 docker-compose 文件按原样工作):
services:
db:
image: postgres
environment:
- POSTGRES_USER=king
- POSTGRES_DB=kong
- POSTGRES_HOST_AUTH_METHOD=trust
healthcheck:
test: pg_isready -U postgres
web:
image: alpine
depends_on:
db:
condition: service_healthy
Run Code Online (Sandbox Code Playgroud)
然后运行docker-compose run web
,它会等待数据库才开始。
该指令还有更详细的形式healthcheck
:
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
Run Code Online (Sandbox Code Playgroud)
笔记:
dev*_*ops 10
我经常发现使用等待它的 bash 脚本比对 docker-compose 的内置健康检查更有效。
这会针对给定端口运行 TCP 健康检查,并在开始运行进程之前等待检查完成。
示例代码:
version: "2"
services:
web:
build: .
ports:
- "80:8000"
depends_on:
- "db"
command: ["./wait-for-it.sh", "db:5432", "--", "python", "app.py"]
db:
image: postgres
Run Code Online (Sandbox Code Playgroud)
这是一些文档:
归档时间: |
|
查看次数: |
4280 次 |
最近记录: |