将健康检查添加到我的泊坞窗文件后:
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
输出:确定
任何想法如何解决这个问题?
答案 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环境变量