diff --git a/unit-files/discovery@.service b/unit-files/discovery@.service new file mode 100644 index 0000000000000000000000000000000000000000..573dbf1117c3eeb80c667ad92806bc2cb951a877 --- /dev/null +++ b/unit-files/discovery@.service @@ -0,0 +1,17 @@ +[Unit] +Description=%p for %i etcd registration + +# Requirements +Requires=etcd.service + +# Dependency binding +BindsTo=web@%i.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/bin/bash -euxc ' \ + ip=`docker inspect --format \'{{.NetworkSettings.IPAddress}}\' %i`; \ + etcdctl --peers 172.17.42.1:4001 set /services/web/%i \'{"ip":"\'$ip\'", "port":"80"}\';' +ExecStop=-/usr/bin/etcdctl rm /services/web/%i + diff --git a/unit-files/web@.service b/unit-files/web@.service index 5caaba4fddb731c46641631fa9466fa0e2c8e335..2c2daa7a2233ba751e3d2814aaf4fe4ee83d8bdd 100644 --- a/unit-files/web@.service +++ b/unit-files/web@.service @@ -3,10 +3,12 @@ Description=%p-%i # Requirements Requires=docker.service +Requires=discovery@%i.service Requires=backup@%i.timer # Dependency ordering After=docker.service +Before=discovery@%i.service Before=backup@%i.timer [Service] @@ -29,9 +31,6 @@ ExecStart=/bin/bash -euxc ' \ -v /data/runtime/domains/%i/log/apache2:/var/log/apache2 \ ${DOCKER_ARGUMENTS} \ pierreozoux/${APPLICATION}' -ExecStartPost=/bin/bash -c ' \ - ip=`docker inspect --format \'{{.NetworkSettings.IPAddress}}\' %i`; \ - /usr/bin/etcdctl --peers 172.17.42.1:4001 set /services/web/%i \'{"ip":"\'$ip\'", "port":"80"}\' +ExecReload=/usr/bin/docker restart %i ExecStop=/usr/bin/docker stop %i -ExecStopPost=-/usr/bin/etcdctl --peers 172.17.42.1:4001 rm /services/web/%i