Custom nginx container exits immediately when part of docker-compose

Just ran into this same issue, and the initial fix was to change the name of the service in docker-compose.yml.

This worked, but the reason it worked is because Docker-compose caches the build & ties it to the service name. Every docker-compose up after the first one just uses what it built before, so any changes you make to the Dockerfile, or that section of the docker-compose.yml are basically ignored.

When you (and I) changed the service name, it triggered a new build since that service name hasn't been tagged before.

The real solution is to do a: docker-compose build to rebuild the image (followed by a docker-compose up). Their documentation doesn't really emphasize this issue.


The CMD in your Dockerfile should start a process which needs to run in foreground. The command service nginx start runs the process in deamon mode and thus your container exits cleanly because the service command exits.

Use the following CMD ["nginx", "-g", "daemon off;"] to start nginx (taken from official image) and it should work correctly.