HEALTHCHECK启动容器进程导致USERNAME无效环境

时间:2017-12-10 11:43:49

标签: docker curl dockerfile health-monitoring

将健康检查添加到我的泊坞窗文件后:

HEALTHCHECK --interval=2m --timeout=30s --retries=5 CMD curl -r http://localhost:1234/healthstatus || exit 1

我在docker ps中的状态下得到了不健康的警报(容器已启动): 大约一个小时(不健康)

CONTAINER ID        IMAGE                                                                      COMMAND                  CREATED             STATUS                         PORTS                                          NAMES
jdhfjksdhfk        my_docker_register/my_service                   "/usr/src/app/entr..."   About an hour ago   Up About an hour (unhealthy)   0.0.0.0:1234->1234/tcp, 0.0.0.0:80->1234/tcp   my_service

检查健康日志后,我可以看到输出:

docker inspect --format=’{{json .State}}’ my_service | jq .
  

{“Health”:{“Log”:[{“Output”:“rpc error:code = 2 desc = oci   运行时错误:exec失败:container_linux.go:247:启动容器   进程导致“无效环境'USERNAME'”\ n“,”ExitCode“: - 1,   “结束”:“2017-12-10T10:28:42.274606327Z”,“开始”:   “2017-12-10T10:28:42.241716647Z”},{“输出”:“rpc错误:代码= 2   desc = oci运行时错误:exec失败:container_linux.go:247:   启动容器进程导致“无效环境'USERNAME'”\ n“,   “ExitCode”: - 1,“End”:“2017-12-10T10:30:42.313609006Z”,“开始”:   “2017-12-10T10:30:42.274847833Z”},{“输出”:“rpc错误:代码= 2   desc = oci运行时错误:exec失败:container_linux.go:247:   启动容器进程导致“无效环境'USERNAME'”\ n“,   “ExitCode”: - 1,“End”:“2017-12-10T10:32:42.347550172Z”,“开始”:   “2017-12-10T10:32:42.313834355Z”},{“输出”:“rpc错误:代码= 2   desc = oci运行时错误:exec失败:container_linux.go:247:   启动容器进程导致“无效环境'USERNAME'”\ n“,   “ExitCode”: - 1,“End”:“2017-12-10T10:34:42.380622433Z”,“开始”:   “2017-12-10T10:34:42.347742726Z”}],“FailingStreak”:4,“状态”:   “开始”},

当我使用相同的命令执行docker exec时,它可以正常工作:

docker exec -it my_service curl -r http://localhost:1234/healthstatus || exit 1

输出:确定

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

所以我的问题实际上是由于环境变量' USERNAME '在我的docker compose文件中配置但值为 null

version: "2"
services:
  my-service:
    image: registry/ramp-webapp
    restart: always
    environment:
      NODE_ENV: {{node_env}}
      USERNAME:
      CONSUL_AGENT_HOST: {{ ansible_eth0.ipv4.address }}
    ports:
      - "80:80"
    container_name: my-service
    volumes:
      - /var/log/my-service:/var/log/my-service

我真的不知道为什么设置为null的环境变量会导致此问题。

我的解决方案是从docker撰写删除 USERNAME环境变量