Docker Nginx运行状况检查失败,但未定义运行状况检查时脚本可以工作

时间:2018-09-23 13:10:31

标签: docker nginx

我们有一个问题,其中我们在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

0 个答案:

没有答案