8

I'm having a docker compose setup of a database container, an application container and one container which pre-loads the database with necessary data.

I want to start all of the containers together with docker-compose up while the pre-loading container terminates after it has completed it work with exit 0.

But terminating this one container takes down the complete setup with the message:

composesetup_load_1 exited with code 0
Gracefully stopping... (press Ctrl+C again to force)
Stopping composesetup_app_1...
Stopping composesetup_db_1...

Is there any way of having multiple containers with different life-time in one docker-compose setup? If yes, how?

white_gecko
  • 4,808
  • 4
  • 55
  • 76

2 Answers2

8

My workaround for now is to keep the pre-loading container running by adding tail -f /dev/null to the end of the entrypoint script. This keeps the process running, while nothing actual happens.

white_gecko
  • 4,808
  • 4
  • 55
  • 76
-1

Using -d option at docker-compose up -d will run the process in detached mode. This avoids the need to kill the service with Ctrl+C and therefore stop the containers.

Note: I am asumming you killed the process with Ctrl+C from the message "Gracefully stopping... (press Ctrl+C again to force)" you shared.

atfornes
  • 468
  • 5
  • 21
  • 1
    No, I've not terminated the process with Ctrl+C the process has just completed its work and thus terminates with `exit 0`. So running docker-compose with the `-d` option is no solution. – white_gecko Aug 01 '17 at 09:36
  • 1
    @white_gecko, ok, thanks for clarifying. The behaviour is then as if the flag `--abort-on-container-exit` was set? – atfornes Aug 01 '17 at 16:05
  • 1
    Ok, maybe this flag is a solution … when I've posted the question at least this behavior was default. – white_gecko Aug 02 '17 at 07:47