Docker CMD在Dockerfile中启动Haproxy

Docker CMD在Dockerfile中启动Haproxy,docker,ubuntu-14.04,haproxy,dockerfile,Docker,Ubuntu 14.04,Haproxy,Dockerfile,以下是haproxy的Dockerfile中的CMD命令: CMD ["/etc/init.d/haproxy"] 现在,当我运行映像时,会发生以下情况: ... Successfully built 2eb6549e0a22 root@server:/# docker run -d -p 80:80 -p 81:81 -p 443:443 -p 1988:1988 --name haproxy -h haproxy user/haproxy 09b510c4df712414d8855d3e0

以下是haproxy的Dockerfile中的CMD命令:

CMD ["/etc/init.d/haproxy"]
现在,当我运行映像时,会发生以下情况:

...
Successfully built 2eb6549e0a22
root@server:/# docker run -d -p 80:80 -p 81:81 -p 443:443 -p 1988:1988 --name haproxy -h haproxy user/haproxy
09b510c4df712414d8855d3e0fb27b7e35d5c5c2f0f9b07f7f29c8efdb93e852
root@server:/# docker ps -a
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS                     PORTS               NAMES
09b510c4df71        user/haproxy   "/etc/init.d/haproxy"   5 seconds ago       Exited (2) 4 seconds ago                       haproxy

正如你所看到的,它马上就出来了。如何保持其运行?

您的
用户/haproxy
是否继承了主docker repo中的?如果是这样,命令
haproxy
应该在路径中,并且它包括一个
-f
标志,用于在前台运行它

我通常也会指定配置文件,因此我的CMD看起来像:

haproxy -d -f /usr/local/etc/haproxy/haproxy.cfg

所以CMD[“haproxy-d-f/usr/local/etc/haproxy/haproxy.cfg”]?嗯,在命令下,我在4秒钟前得到了
“haproxy-f/usr/loca”
,好像字符串命令太长了,不能作为参数。@KarlMorrison它不太长,只是这样显示。您可以使用
--no trunc
标志查看整个命令。如果您在该位置实际有一个haproxy配置文件,那么这将起作用。您可以在docker文件中添加或复制一个卷,或者在运行它时安装一个卷
-v haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
确定!我必须
-将它
放入容器中,看看问题出在哪里。@KarlMorrison运气好吗?只是一个建议,用于调试目的:在调用“docker run”时,暂时省略“-d”(deamon模式)。在我的例子中,我这样做了,从haproxy那里得到了一些信息,抱怨我的配置文件有一些问题。