我有一个在多个端口上运行服务的docker容器。

当我尝试在Dockerfile的中途启动这些过程之一时,它将导致构建过程无限期地停止。

RUN /opt/webhook/webhook-linux-amd64/webhook -hooks /opt/webhook/hooks.json -verbose

docker - Docker处理不完的进程?-LMLPHP

因此,该程序正在按预期方式运行,但永远不会继续运行。

我尝试在命令末尾添加&来告诉bash并行运行下一步,但这会导致该服务不在最终镜像中运行。我还尝试将程序的输出重定向到/dev/null

我该如何解决?

最佳答案

您在这里有一个误解。执行Dockerfile中的命令后,会创建一个Docker镜像。 Dockerfile中的一种命令类型是 RUN ,它允许您运行一个任意的shell命令,该命令的操作在某种意义上影响正在创建的镜像。
因此,生成过程将等待直到命令终止。

似乎在启动镜像时要启动服务。为此,请使用 CMD 命令。它告诉Docker启动镜像时应该执行什么操作。

关于docker - Docker处理不完的进程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45863084/

10-12 06:31