Philip Kirkbride
Philip Kirkbride

Reputation: 22879

Docker dealing with processes that don't end?

I have a docker container that has services running on multiple ports.

When I try to start one of these processes mid-way through my Dockerfile it causes the build process to stall indefinitely.

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

enter image description here

So the program is running as it should but it never moves on.

I've tried adding & to the end of the command to tell bash to run the next step in parallel but this causes the service to not be running in the final image. I also tried redirecting the output of the program to /dev/null.

How can I get around this?

Upvotes: 1

Views: 130

Answers (1)

fzgregor
fzgregor

Reputation: 1897

You have a misconception here. The commands in the Dockerfile are executed to create a docker image before it is executed. One type of command in the Dockerfile is RUN which allows you to run an arbitrary shell command whose actions influence the image under creation in some sense. Therefore, the build process waits until the command terminates.

It seems you want to start the service when the image is started. To do so use the CMD command instead. It tells Docker what is supposed to be executed when the image is started.

Upvotes: 4

Related Questions