diff --git a/unit-files/backup@.timer b/unit-files/backup@.timer index 5908b7f48578a3082e6f93b609419053c91822bc..6692c3c1c229b121a0641b4321ef28c1dc2c4d08 100644 --- a/unit-files/backup@.timer +++ b/unit-files/backup@.timer @@ -1,6 +1,9 @@ [Unit] Description=Hourly backup of www and mysql content to a git repo +# Dependency binding +BindsTo=web@%i.service + [Timer] OnActiveSec=20 OnUnitActiveSec=60min diff --git a/unit-files/discovery@.service b/unit-files/discovery@.service index fc3669305fe701c5ac5ea450782a229dd1e30099..fe95a19da58e9bd22011bf2478d9e57990510a0a 100644 --- a/unit-files/discovery@.service +++ b/unit-files/discovery@.service @@ -4,6 +4,9 @@ Description=%p for %i etcd registration # Requirements Requires=etcd.service +# Dependency binding +BindsTo=web@%i.service + [Service] ExecStart=/bin/bash -c ' \ sleep 30; \ diff --git a/unit-files/lamp@.service b/unit-files/lamp@.service index e7e5954a4c63de171a456d5e4068b45032ba77a3..3ecc7a6a2ef9691423137fe3dbfe624bb2f0ab61 100644 --- a/unit-files/lamp@.service +++ b/unit-files/lamp@.service @@ -2,48 +2,27 @@ Description=%p-%i # Requirements -Requires=docker.service Requires=mysql@%i.service -Requires=discovery@%i.service -Requires=backup@%i.timer +Requires=web@%i.service # Dependency ordering -After=docker.service After=mysql@%i.service -Before=discovery@%i.service -Before=backup@%i.timer +Before=web@%i.service + +# Dependency binding +BindsTo=web@%i.service [Service] -Restart=always -ExecStartPre=cp /data/domains/%i/TLS/%i.pem /data/runtime/haproxy/approved-certs/%i.pem -Type=notify -NotifyAccess=all +Type=oneshot +RemainAfterExit=yes EnvironmentFile=/data/domains/%i/.env -Environment=URL=%i -ExecStartPre=/usr/bin/docker run --rm -v /opt/bin:/opt/bin ibuildthecloud/systemd-docker -ExecStartPre=-/usr/bin/docker kill %i -ExecStartPre=-/usr/bin/docker rm %i -ExecStartPre=/bin/bash -euxc ' \ +ExecStart=/bin/bash -euxc ' \ application_folder=/data/domains/%i/${APPLICATION}; \ if [ ! -d $application_folder ]; then \ mkdir -p $application_folder; \ touch $application_folder/.htaccess; \ - fi; \ - cat /data/domains/%i/mysql/.env | sed s/MYSQL_PASS/DB_PASS/ > $application_folder/.env' - -ExecStart=/opt/bin/systemd-docker --env run \ - --name %i \ - --link mysql-%i:db \ - -v /data/domains/%i/${APPLICATION}/data:${VOLUME} \ - -v /data/domains/%i/${APPLICATION}/.htaccess:/app/.htaccess \ - --env-file /data/domains/%i/${APPLICATION}/.env \ - pierreozoux/${APPLICATION} -ExecReload=/usr/bin/docker restart %i - -ExecStop=/bin/bash -euxc ' \ - systemctl stop discovery@%i.service; \ - systemctl stop backup@%i.timer; \ - /usr/bin/docker stop %i;' + cat /data/domains/%i/mysql/.env | sed s/MYSQL_PASS/DB_PASS/ > $application_folder/.env; \ + fi;' [Install] WantedBy=multi-user.target diff --git a/unit-files/mysql@.service b/unit-files/mysql@.service index 0f3b3a1f9548f1472c6002ff0be8505c516fa305..25cbe2b60d3972374ae764226f7f0fdc0e94d461 100644 --- a/unit-files/mysql@.service +++ b/unit-files/mysql@.service @@ -6,7 +6,6 @@ Requires=docker.service # Dependency ordering After=docker.service -After=init@%i.service Before=backup@%i.timer # Dependency binding diff --git a/unit-files/static@.service b/unit-files/static@.service index 7c6d3fee9724a76c1dc1bca745bb16467838fb4b..12be287575fe16fedf307b9b102c21516d177112 100644 --- a/unit-files/static@.service +++ b/unit-files/static@.service @@ -2,40 +2,19 @@ Description=%p-%i # Requirements -Requires=docker.service -Requires=discovery@%i.service -Requires=backup@%i.timer +Requires=web@%i.service # Dependency ordering -After=docker.service -Before=discovery@%i.service -Before=backup@%i.timer +Before=web@%i.service [Service] -Restart=always -ExecStartPre=cp /data/domains/%i/TLS/%i.pem /data/runtime/haproxy/approved-certs/%i.pem -ExecStartPre=-/usr/bin/docker kill %i -ExecStartPre=-/usr/bin/docker rm %i -ExecStartPre=/bin/bash -euxc ' \ +ExecStart=/bin/bash -euxc ' \ application_folder=/data/domains/%i/%p/www-content; \ if [ ! -d $application_folder ]; then \ mkdir -p $application_folder; \ echo Hello %i > $application_folder/index.html; \ fi' -ExecStart=/usr/bin/docker run \ - --name %i \ - -v /data/domains/%i/%p/www-content:/app \ - pierreozoux/nginx -ExecReload=/bin/bash -euxc ' \ - /usr/bin/docker restart %i; \ - systemctl restart discovery@%i.service; \ - systemctl restart backup@%i.timer;' -ExecStop=/bin/bash -euxc ' \ - systemctl stop discovery@%i.service; \ - systemctl stop backup@%i.timer; \ - /usr/bin/docker stop %i;' - [Install] WantedBy=multi-user.target diff --git a/unit-files/web@.service b/unit-files/web@.service new file mode 100644 index 0000000000000000000000000000000000000000..daebddffee57b2b9283a5d34e12e6dd4e3987909 --- /dev/null +++ b/unit-files/web@.service @@ -0,0 +1,32 @@ +[Unit] +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] +Restart=always +Type=notify +NotifyAccess=all +EnvironmentFile=/data/domains/%i/.env +Environment=URL=%i +ExecStartPre=/usr/bin/docker run --rm -v /opt/bin:/opt/bin ibuildthecloud/systemd-docker +ExecStartPre=-/usr/bin/docker kill %i +ExecStartPre=-/usr/bin/docker rm %i +ExecStartPre=/bin/cp /data/domains/%i/TLS/%i.pem /data/runtime/haproxy/approved-certs/%i.pem +ExecStart=/bin/bash -euxc ' \ + /opt/bin/systemd-docker --env run \ + --rm \ + --name %i \ + ${DOCKER_ARGUMENTS} \ + pierreozoux/${APPLICATION}' +ExecReload=/usr/bin/docker restart %i +ExecStop=/usr/bin/docker stop %i +