Skip to content

Commit 66660a4

Browse files
author
Gabriel Monroy
committed
fix(systemd): handle starting containers that already exist
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.
1 parent e9eef67 commit 66660a4

7 files changed

Lines changed: 12 additions & 5 deletions

File tree

builder/systemd/deis-builder.service

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ After=deis-controller.service
77
EnvironmentFile=/etc/environment
88
TimeoutStartSec=20m
99
ExecStartPre=/bin/sh -c "/usr/bin/docker history deis/builder >/dev/null || /usr/bin/docker pull deis/builder"
10-
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"
10+
ExecStartPre=/bin/sh -c "/usr/bin/docker inspect deis-builder >/dev/null && /usr/bin/docker rm -f deis-builder || true"
11+
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"
1112
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"
1213
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"
1314
ExecStop=/usr/bin/docker rm -f deis-builder

cache/systemd/deis-cache.service

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ Description=deis-cache
44
[Service]
55
EnvironmentFile=/etc/environment
66
TimeoutStartSec=20m
7-
ExecStartPre=/bin/sh -c "/usr/bin/docker history deis/cache || /usr/bin/docker pull deis/cache"
7+
ExecStartPre=/bin/sh -c "/usr/bin/docker history deis/cache >/dev/null || /usr/bin/docker pull deis/cache"
8+
ExecStartPre=/bin/sh -c "/usr/bin/docker inspect deis-cache >/dev/null && /usr/bin/docker rm -f deis-cache || true"
89
ExecStart=/bin/sh -c "docker run --name deis-cache -p 6379:6379 -e PUBLISH=6379 -e HOST=$COREOS_PRIVATE_IPV4 deis/cache"
910
ExecStop=/usr/bin/docker rm -f deis-cache
1011

controller/systemd/deis-controller.service

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ After=deis-logger.service
77
EnvironmentFile=/etc/environment
88
TimeoutStartSec=20m
99
ExecStartPre=/bin/sh -c "/usr/bin/docker history deis/controller >/dev/null || /usr/bin/docker pull deis/controller"
10+
ExecStartPre=/bin/sh -c "/usr/bin/docker inspect deis-controller >/dev/null && /usr/bin/docker rm -f deis-controller || true"
1011
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"
1112
ExecStop=/usr/bin/docker rm -f deis-controller
1213

database/systemd/deis-database.service

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ Description=deis-database
55
EnvironmentFile=/etc/environment
66
TimeoutStartSec=20m
77
ExecStartPre=/bin/sh -c "/usr/bin/docker history deis/database >/dev/null || /usr/bin/docker pull deis/database"
8-
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"
8+
ExecStartPre=/bin/sh -c "/usr/bin/docker inspect deis-database >/dev/null && /usr/bin/docker rm -f deis-database || true"
9+
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"
910
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
1011
ExecStop=/usr/bin/docker rm -f deis-database
1112

logger/systemd/deis-logger.service

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ Description=deis-logger
55
EnvironmentFile=/etc/environment
66
TimeoutStartSec=20m
77
ExecStartPre=/bin/sh -c "/usr/bin/docker history deis/logger >/dev/null || /usr/bin/docker pull deis/logger"
8-
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"
8+
ExecStartPre=/bin/sh -c "/usr/bin/docker inspect deis-logger >/dev/null && /usr/bin/docker rm -f deis-logger || true"
9+
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"
910
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"
1011
ExecStop=/usr/bin/docker rm -f deis-logger
1112

registry/systemd/deis-registry.service

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ Description=deis-registry
55
EnvironmentFile=/etc/environment
66
TimeoutStartSec=20m
77
ExecStartPre=/bin/sh -c "/usr/bin/docker history deis/registry >/dev/null || /usr/bin/docker pull deis/registry"
8-
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"
8+
ExecStartPre=/bin/sh -c "/usr/bin/docker inspect deis-registry >/dev/null && /usr/bin/docker rm -f deis-registry || true"
9+
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"
910
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"
1011
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"
1112
ExecStop=/usr/bin/docker rm -f deis-registry

router/systemd/deis-router.service

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Description=deis-router
55
EnvironmentFile=/etc/environment
66
TimeoutStartSec=20m
77
ExecStartPre=/bin/sh -c "/usr/bin/docker history deis/router >/dev/null || /usr/bin/docker pull deis/router"
8+
ExecStartPre=/bin/sh -c "/usr/bin/docker inspect deis-router >/dev/null && /usr/bin/docker rm -f deis-router || true"
89
ExecStart=/bin/sh -c "docker run --name deis-router -p 80:80 -e PUBLISH=80 -e HOST=$COREOS_PRIVATE_IPV4 deis/router"
910
ExecStop=/usr/bin/docker rm -f deis-router
1011

0 commit comments

Comments
 (0)