Skip to content

Commit 89cf376

Browse files
committed
feat(*): move data containers into new unit files
Moving these containers into their own data files sets the stage for locking data containers to specific machines. This also enables us to stop Postgres cleanly on the database-data container. closes #638
1 parent a6ff41b commit 89cf376

8 files changed

Lines changed: 61 additions & 4 deletions

File tree

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[Unit]
2+
Description=deis-builder-data
3+
4+
[Service]
5+
Type=oneshot
6+
RemainAfterExit=yes
7+
ExecStart=/bin/sh -c "docker inspect deis-builder-data >/dev/null 2>&1 || docker run --name deis-builder-data -v /var/lib/docker deis/base true"
8+
9+
[Install]
10+
WantedBy=multi-user.target
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
[Unit]
22
Description=deis-builder
3+
Requires=deis-builder-data.service
4+
After=deis-builder-data.service
35

46
[Service]
57
EnvironmentFile=/etc/environment
68
TimeoutStartSec=20m
79
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/builder`; docker history $IMAGE >/dev/null || docker pull $IMAGE"
810
ExecStartPre=/bin/sh -c "docker inspect deis-builder >/dev/null && docker rm -f deis-builder || true"
9-
ExecStartPre=/bin/sh -c "docker inspect deis-builder-data >/dev/null 2>&1 || docker run --name deis-builder-data -v /var/lib/docker deis/base true"
1011
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/builder` && docker run --name deis-builder --rm -p 2223:22 -e PUBLISH=22 -e HOST=$COREOS_PRIVATE_IPV4 -e PORT=2223 --volumes-from deis-builder-data --privileged $IMAGE"
1112
ExecStartPost=/bin/sh -c "echo 'Waiting for builder on 2223/tcp...' && until cat </dev/null>/dev/tcp/$COREOS_PRIVATE_IPV4/2223; do sleep 1; done"
1213

1314
[Install]
1415
WantedBy=multi-user.target
16+
17+
[X-Fleet]
18+
X-ConditionMachineOf=deis-builder-data.service
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[Unit]
2+
Description=deis-database-data
3+
4+
[Service]
5+
Type=oneshot
6+
RemainAfterExit=yes
7+
ExecStart=/bin/sh -c "docker inspect deis-database-data >/dev/null 2>&1 || docker run --name deis-database-data -v /var/lib/postgresql deis/base true"
8+
9+
[Install]
10+
WantedBy=multi-user.target
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
[Unit]
22
Description=deis-database
3+
Requires=deis-database-data.service
4+
After=deis-database-data.service
35

46
[Service]
57
EnvironmentFile=/etc/environment
68
TimeoutStartSec=20m
79
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/database`; docker history $IMAGE >/dev/null || docker pull $IMAGE"
810
ExecStartPre=/bin/sh -c "docker inspect deis-database >/dev/null && docker rm -f deis-database || true"
9-
ExecStartPre=/bin/sh -c "docker inspect deis-database-data >/dev/null 2>&1 || docker run --name deis-database-data -v /var/lib/postgresql deis/base true"
1011
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/database` && docker run --name deis-database --rm -p 5432:5432 -e PUBLISH=5432 -e HOST=$COREOS_PRIVATE_IPV4 --volumes-from deis-database-data $IMAGE"
12+
ExecStop=/bin/bash -c "nsenter --pid --uts --mount --ipc --net --target $(docker inspect --format='{{ .State.Pid }}' deis-database) sudo service postgresql stop"
1113

1214
[Install]
1315
WantedBy=multi-user.target
16+
17+
[X-Fleet]
18+
X-ConditionMachineOf=deis-database-data.service
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[Unit]
2+
Description=deis-logger-data
3+
4+
[Service]
5+
Type=oneshot
6+
RemainAfterExit=yes
7+
ExecStart=/bin/sh -c "docker inspect deis-logger-data >/dev/null 2>&1 || docker run --name deis-logger-data -v /var/log/deis deis/base true"
8+
9+
[Install]
10+
WantedBy=multi-user.target

logger/systemd/deis-logger.service

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
[Unit]
22
Description=deis-logger
3+
Requires=deis-logger-data.service
4+
After=deis-logger-data.service
35

46
[Service]
57
EnvironmentFile=/etc/environment
68
TimeoutStartSec=20m
79
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/logger`; docker history $IMAGE >/dev/null || docker pull $IMAGE"
810
ExecStartPre=/bin/sh -c "docker inspect deis-logger >/dev/null && docker rm -f deis-logger || true"
9-
ExecStartPre=/bin/sh -c "docker inspect deis-logger-data >/dev/null 2>&1 || docker run --name deis-logger-data -v /var/log/deis deis/base true"
1011
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/logger` && docker run --name deis-logger --rm -p 514:514/udp -e PUBLISH=514 -e HOST=$COREOS_PRIVATE_IPV4 --volumes-from deis-logger-data $IMAGE"
1112

1213
[Install]
1314
WantedBy=multi-user.target
15+
16+
[X-Fleet]
17+
X-ConditionMachineOf=deis-logger-data.service
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[Unit]
2+
Description=deis-registry-data
3+
4+
[Service]
5+
Type=oneshot
6+
RemainAfterExit=yes
7+
ExecStart=/bin/sh -c "docker inspect deis-registry-data >/dev/null 2>&1 || docker run --name deis-registry-data -v /data deis/base /bin/true"
8+
9+
[Install]
10+
WantedBy=multi-user.target
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
[Unit]
22
Description=deis-registry
3+
Requires=deis-registry-data.service
4+
After=deis-registry-data.service
35

46
[Service]
57
EnvironmentFile=/etc/environment
68
TimeoutStartSec=20m
79
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/registry`; docker history $IMAGE >/dev/null || docker pull $IMAGE"
810
ExecStartPre=/bin/sh -c "docker inspect deis-registry >/dev/null && docker rm -f deis-registry || true"
9-
ExecStartPre=/bin/sh -c "docker inspect deis-registry-data >/dev/null 2>&1 || docker run --name deis-registry-data -v /data deis/base /bin/true"
1011
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/registry` && docker run --name deis-registry --rm -p 5000:5000 -e PUBLISH=5000 -e HOST=$COREOS_PRIVATE_IPV4 --volumes-from deis-registry-data $IMAGE"
1112
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"
1213

1314
[Install]
1415
WantedBy=multi-user.target
16+
17+
[X-Fleet]
18+
X-ConditionMachineOf=deis-registry-data.service

0 commit comments

Comments
 (0)