[英]Docker compose keeps running healthcheck
我正在使用 docker 组合运行几个服务。
数据加载器服务必须等待翻译器,但是一旦数据加载器运行,运行状况检查不会停止执行,即使在退出后也是如此。
translator:
build: ./translator
container_name: translator
command: uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
healthcheck:
test: curl -f translator:8000/healthcheck || exit 1
interval: 5s
timeout: 5s
retries: 5
env_file:
- ./translator/.env
networks:
- fds-network
ports:
- 8000:8000
restart: always
depends_on:
- redis
volumes:
- ./translator:/app/
data-loader:
build:
context: ./data-loader
dockerfile: Dockerfile
container_name: data-loader
command: python3 app/main.py
environment:
- "DOCKER=true"
- "BASE_LANG=es"
- "LOAD_DISEASES=false"
depends_on:
cassandra-load-keyspace:
condition: service_completed_successfully
translator:
condition: service_healthy
env_file:
- ./data-loader/.env
networks:
- fds-network
运行状况检查的端点:
@app.get("/healthcheck")
async def healthcheck():
return {"status": "ok"}
这是控制台 output:
cassandra-load-keyspace exited with code 0
data-loader | Dataloader connected to Cassandra
data-loader | Dataloader started
data-loader | load diseases False
data-loader | Skipping disease loading
translator | INFO: 172.18.0.4:46638 - "GET /healthcheck HTTP/1.1" 200 OK
data-loader exited with code 0
translator | INFO: 172.18.0.4:56822 - "GET /healthcheck HTTP/1.1" 200 OK
translator | INFO: 172.18.0.4:56836 - "GET /healthcheck HTTP/1.1" 200 OK
translator | INFO: 172.18.0.4:40618 - "GET /healthcheck HTTP/1.1" 200 OK
translator | INFO: 172.18.0.4:40624 - "GET /healthcheck HTTP/1.1" 200 OK
translator | INFO: 172.18.0.4:51620 - "GET /healthcheck HTTP/1.1" 200 OK
translator | INFO: 172.18.0.4:51630 - "GET /healthcheck HTTP/1.1" 200 OK
等等。
如果数据加载器服务正在运行,那是因为健康检查正常,并且对端点的调用次数大于健康检查条件下的尝试次数,并且没有更多的服务或函数调用该端点,所以它必须是撰写时的 healthechk。
这里有什么问题?
所以它必须是撰写时的healthechk。
是的,translator 健康检查由 docker 运行,每隔 5 秒interval: 5s
,是否有任何依赖服务在运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.