繁体   English   中英

Docker compose 保持运行健康检查

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM