为什么CTRL-C不再停止我的nginx容器了?

时间:2018-02-06 15:26:33

标签: docker nginx dockerfile

我正在尝试使用基于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;'集成到[...]语法中。

1 个答案:

答案 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”]