Skip to content
This repository has been archived by the owner on Nov 30, 2021. It is now read-only.

Commit

Permalink
fix(systemd): handle starting containers that already exist
Browse files Browse the repository at this point in the history
After a reboot, named containers for Deis components often
exist in a stopped state.  Prior to this commit,
Deis would fail to start the components due to a name conflict.
Now any existing named containers are removed in ExecStartPre
so ExecStart should always succeed.
  • Loading branch information
Gabriel Monroy committed May 2, 2014
1 parent e9eef67 commit 66660a4
Show file tree
Hide file tree
Showing 7 changed files with 12 additions and 5 deletions.
3 changes: 2 additions & 1 deletion builder/systemd/deis-builder.service
Expand Up @@ -7,7 +7,8 @@ After=deis-controller.service
EnvironmentFile=/etc/environment
TimeoutStartSec=20m
ExecStartPre=/bin/sh -c "/usr/bin/docker history deis/builder >/dev/null || /usr/bin/docker pull deis/builder"
ExecStartPre=/bin/bash -c "/usr/bin/docker start deis-builder-data || /usr/bin/docker run --name deis-builder-data -v /var/lib/docker deis/base /bin/true"
ExecStartPre=/bin/sh -c "/usr/bin/docker inspect deis-builder >/dev/null && /usr/bin/docker rm -f deis-builder || true"
ExecStartPre=/bin/sh -c "/usr/bin/docker start deis-builder-data || /usr/bin/docker run --name deis-builder-data -v /var/lib/docker deis/base /bin/true"
ExecStart=/bin/sh -c "docker run --name deis-builder -p 2222:22 -e PUBLISH=22 -e HOST=$COREOS_PRIVATE_IPV4 -e PORT=2222 --volumes-from deis-builder-data --privileged deis/builder"
ExecStartPost=/bin/sh -c "echo 'Waiting for builder on 2222/tcp...' && until cat </dev/null>/dev/tcp/$COREOS_PRIVATE_IPV4/2222; do sleep 1; done"
ExecStop=/usr/bin/docker rm -f deis-builder
Expand Down
3 changes: 2 additions & 1 deletion cache/systemd/deis-cache.service
Expand Up @@ -4,7 +4,8 @@ Description=deis-cache
[Service]
EnvironmentFile=/etc/environment
TimeoutStartSec=20m
ExecStartPre=/bin/sh -c "/usr/bin/docker history deis/cache || /usr/bin/docker pull deis/cache"
ExecStartPre=/bin/sh -c "/usr/bin/docker history deis/cache >/dev/null || /usr/bin/docker pull deis/cache"
ExecStartPre=/bin/sh -c "/usr/bin/docker inspect deis-cache >/dev/null && /usr/bin/docker rm -f deis-cache || true"
ExecStart=/bin/sh -c "docker run --name deis-cache -p 6379:6379 -e PUBLISH=6379 -e HOST=$COREOS_PRIVATE_IPV4 deis/cache"
ExecStop=/usr/bin/docker rm -f deis-cache

Expand Down
1 change: 1 addition & 0 deletions controller/systemd/deis-controller.service
Expand Up @@ -7,6 +7,7 @@ After=deis-logger.service
EnvironmentFile=/etc/environment
TimeoutStartSec=20m
ExecStartPre=/bin/sh -c "/usr/bin/docker history deis/controller >/dev/null || /usr/bin/docker pull deis/controller"
ExecStartPre=/bin/sh -c "/usr/bin/docker inspect deis-controller >/dev/null && /usr/bin/docker rm -f deis-controller || true"
ExecStart=/bin/sh -c "docker run --name deis-controller -p 8000:8000 -e PUBLISH=8000 -e HOST=$COREOS_PRIVATE_IPV4 --volumes-from=deis-logger deis/controller"
ExecStop=/usr/bin/docker rm -f deis-controller

Expand Down
3 changes: 2 additions & 1 deletion database/systemd/deis-database.service
Expand Up @@ -5,7 +5,8 @@ Description=deis-database
EnvironmentFile=/etc/environment
TimeoutStartSec=20m
ExecStartPre=/bin/sh -c "/usr/bin/docker history deis/database >/dev/null || /usr/bin/docker pull deis/database"
ExecStartPre=/bin/bash -c "/usr/bin/docker start deis-database-data || /usr/bin/docker run --name deis-database-data -v /var/lib/postgresql deis/base /bin/true"
ExecStartPre=/bin/sh -c "/usr/bin/docker inspect deis-database >/dev/null && /usr/bin/docker rm -f deis-database || true"
ExecStartPre=/bin/sh -c "/usr/bin/docker start deis-database-data || /usr/bin/docker run --name deis-database-data -v /var/lib/postgresql deis/base /bin/true"
ExecStart=/bin/sh -c "docker run --name deis-database -p 5432:5432 -e PUBLISH=5432 -e HOST=$COREOS_PRIVATE_IPV4 --volumes-from deis-database-data deis/database
ExecStop=/usr/bin/docker rm -f deis-database
Expand Down
3 changes: 2 additions & 1 deletion logger/systemd/deis-logger.service
Expand Up @@ -5,7 +5,8 @@ Description=deis-logger
EnvironmentFile=/etc/environment
TimeoutStartSec=20m
ExecStartPre=/bin/sh -c "/usr/bin/docker history deis/logger >/dev/null || /usr/bin/docker pull deis/logger"
ExecStartPre=/bin/bash -c "/usr/bin/docker start deis-logger-data || /usr/bin/docker run --name deis-logger-data -v /var/log/deis deis/base /bin/true"
ExecStartPre=/bin/sh -c "/usr/bin/docker inspect deis-logger >/dev/null && /usr/bin/docker rm -f deis-logger || true"
ExecStartPre=/bin/sh -c "/usr/bin/docker start deis-logger-data || /usr/bin/docker run --name deis-logger-data -v /var/log/deis deis/base /bin/true"
ExecStart=/bin/sh -c "docker run --name deis-logger -p 514:514/udp -e PUBLISH=514 -e HOST=$COREOS_PRIVATE_IPV4 --volumes-from deis-logger-data deis/logger"
ExecStop=/usr/bin/docker rm -f deis-logger

Expand Down
3 changes: 2 additions & 1 deletion registry/systemd/deis-registry.service
Expand Up @@ -5,7 +5,8 @@ Description=deis-registry
EnvironmentFile=/etc/environment
TimeoutStartSec=20m
ExecStartPre=/bin/sh -c "/usr/bin/docker history deis/registry >/dev/null || /usr/bin/docker pull deis/registry"
ExecStartPre=/bin/bash -c "/usr/bin/docker start deis-registry-data || /usr/bin/docker run --name deis-registry-data -v /data deis/base /bin/true"
ExecStartPre=/bin/sh -c "/usr/bin/docker inspect deis-registry >/dev/null && /usr/bin/docker rm -f deis-registry || true"
ExecStartPre=/bin/sh -c "/usr/bin/docker start deis-registry-data || /usr/bin/docker run --name deis-registry-data -v /data deis/base /bin/true"
ExecStart=/bin/sh -c "docker run --name deis-registry -p 5000:5000 -e PUBLISH=5000 -e HOST=$COREOS_PRIVATE_IPV4 --volumes-from deis-registry-data deis/registry"
ExecStartPost=/bin/sh -c "echo 'Waiting for listener on 5000/tcp...' && until cat </dev/null>/dev/tcp/$COREOS_PRIVATE_IPV4/5000; do sleep 1; done && docker pull deis/slugrunner:latest && docker tag deis/slugrunner $COREOS_PRIVATE_IPV4:5000/deis/slugrunner && docker push $COREOS_PRIVATE_IPV4:5000/deis/slugrunner"
ExecStop=/usr/bin/docker rm -f deis-registry
Expand Down
1 change: 1 addition & 0 deletions router/systemd/deis-router.service
Expand Up @@ -5,6 +5,7 @@ Description=deis-router
EnvironmentFile=/etc/environment
TimeoutStartSec=20m
ExecStartPre=/bin/sh -c "/usr/bin/docker history deis/router >/dev/null || /usr/bin/docker pull deis/router"
ExecStartPre=/bin/sh -c "/usr/bin/docker inspect deis-router >/dev/null && /usr/bin/docker rm -f deis-router || true"
ExecStart=/bin/sh -c "docker run --name deis-router -p 80:80 -e PUBLISH=80 -e HOST=$COREOS_PRIVATE_IPV4 deis/router"
ExecStop=/usr/bin/docker rm -f deis-router

Expand Down

0 comments on commit 66660a4

Please sign in to comment.