我们有一个问题,其中我们在docker-compose文件中为Nginx容器定义了docker运行状况检查。运行状况检查仅运行一个节点js脚本,该脚本在nginx容器的端点上执行https api调用。 由于http超时,运行状况检查失败。如果我们在nginx容器中执行并运行'node nginxcheck.js',我们将得到相同的超时。该应用程序本身在单个节点群中运行(docker stack deploy),但是即使我们只是运行docker-compose up,它也是一样的
奇怪的是,当未在docker-compose中定义运行状况检查时,我们可以执行并运行脚本,并且脚本可以顺利通过。同样,它只是对自己执行一个https请求。因此,我们知道脚本可以正常运行。
好像定义运行状况检查本身正在阻碍脚本。确实,即使尝试从主机外部与端点联系也失败,但是在没有运行状况检查的情况下,一切都可以正常工作。我们尝试在Dockerfile中定义运行状况检查,但这没有什么区别。以下是我们如何定义它的摘录
nginx:
image: nginxdev
deploy:
replicas: 1
restart_policy:
condition: on-failure
restart: always
healthcheck:
test: node ./etc/nginx/nginxcheck.js
interval: 120s
timeout: 60s
retries: 1
depends_on:
- web
ports:
- "443:443"
links:
- web
volumes:
- ./certs:/etc/nginx/certs