我正在尝试使用基于nginx的Dockerfile。最后一行目前看起来像这样:
FROM nginx:alpine
... # not really relevant
CMD /bin/sh -c "envsubst < /etc/nginx/conf.d/site.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"
现在,当我使用docker run my-nginx-image
运行容器时,我注意到CTRL-C
不再停止容器。
在更改之前,我最后得到了以下CMD
声明:
CMD ["nginx", "-g", "daemon off;"]
在这里,CTRL-C
按预期工作:容器已停止。这是为什么?我怎样才能拥有这两个世界?
CTRL-C
正在工作envsubst
包含更新
经过一番阅读后,我意识到我必须使用CMD [...]
进行自举。但是我无法将整个命令envsubst < ... > ... && nginx -g 'daemon off;'
集成到[...]
语法中。
答案 0 :(得分:4)
https://forums.docker.com/t/docker-run-cannot-be-killed-with-ctrl-c/13108/2
所以这里有两个因素:
如果为入口点指定字符串,请执行以下操作:
ENTRYPOINT / go / bin / myapp
Docker使用/ bin / sh -c'命令'运行脚本。这个中间体 脚本获取SIGTERM,但不会将其发送到正在运行的服务器 应用
要避开中间层,请将入口点指定为数组 字符串。
ENTRYPOINT [“/ go / bin / myapp”]