From 322f75319b92923382a9b0693fe603af97b5e2dd Mon Sep 17 00:00:00 2001
From: pierreozoux <pierre@ozoux.net>
Date: Mon, 12 Jan 2015 10:18:35 +0100
Subject: [PATCH] Merge known and wordpress in one unit file

---
 dockerfiles/services/known/VOLUME     |  1 +
 dockerfiles/services/wordpress/VOLUME |  1 +
 unit-files/discovery@.service         | 11 ++----
 unit-files/known@.service             | 45 ------------------------
 unit-files/lamp@.service              | 50 +++++++++++++++++++++++++++
 unit-files/mysql@.service             |  3 ++
 unit-files/static@.service            | 29 +++++++++-------
 unit-files/wordpress@.service         | 45 ------------------------
 8 files changed, 75 insertions(+), 110 deletions(-)
 create mode 100644 dockerfiles/services/known/VOLUME
 create mode 100644 dockerfiles/services/wordpress/VOLUME
 delete mode 100644 unit-files/known@.service
 create mode 100644 unit-files/lamp@.service
 delete mode 100644 unit-files/wordpress@.service

diff --git a/dockerfiles/services/known/VOLUME b/dockerfiles/services/known/VOLUME
new file mode 100644
index 0000000..30c72a7
--- /dev/null
+++ b/dockerfiles/services/known/VOLUME
@@ -0,0 +1 @@
+/uploads
diff --git a/dockerfiles/services/wordpress/VOLUME b/dockerfiles/services/wordpress/VOLUME
new file mode 100644
index 0000000..3e5ad76
--- /dev/null
+++ b/dockerfiles/services/wordpress/VOLUME
@@ -0,0 +1 @@
+/app/wp-content
diff --git a/unit-files/discovery@.service b/unit-files/discovery@.service
index 5a714ce..fc36693 100644
--- a/unit-files/discovery@.service
+++ b/unit-files/discovery@.service
@@ -5,13 +5,10 @@ Description=%p for %i etcd registration
 Requires=etcd.service
 
 [Service]
-# Start
-## Test whether service is accessible and then register useful information
 ExecStart=/bin/bash -c ' \
   sleep 30; \
   while true; do \
-    app=`echo %i | cut -d"-" -f1`; \
-    ip=`docker inspect --format \'{{.NetworkSettings.IPAddress}}\' $app-%i`; \
+    ip=`docker inspect --format \'{{.NetworkSettings.IPAddress}}\' %i`; \
     curl -f $ip; \
     if [ $? -eq 0 ]; then \
       etcdctl set /services/web/%i \'{"ip":"\'$ip\'", "port":"80"}\' --ttl 60; \
@@ -21,7 +18,5 @@ ExecStart=/bin/bash -c ' \
     sleep 50; \
   done'
 
-# Stop
-ExecStop=-/bin/bash -euxc ' \
-  app=`echo %p | cut -d"-" -f1`; \
-  /usr/bin/etcdctl rm /services/web/%i
+ExecStop=-/usr/bin/etcdctl rm /services/web/%i
+
diff --git a/unit-files/known@.service b/unit-files/known@.service
deleted file mode 100644
index 76eb076..0000000
--- a/unit-files/known@.service
+++ /dev/null
@@ -1,45 +0,0 @@
-[Unit]
-Description=%p-%i
-
-# Requirements
-Requires=docker.service
-Requires=init@%i.service
-Requires=mysql@%i.service
-Requires=discovery@%p-%i.service
-Requires=backup@%i.timer
-
-# Dependency ordering
-After=docker.service
-After=init@%i.service
-After=mysql@%i.service
-Before=discovery@%p-%i.service
-Before=backup@%i.timer
-
-# Dependency binding
-BindsTo=mysql@%i.service
-BindsTo=discovery@%p-%i.service
-
-[Service]
-Restart=always
-ExecStartPre=-/usr/bin/docker kill %p-%i
-ExecStartPre=-/usr/bin/docker rm %p-%i
-ExecStartPre=/bin/bash -euxc ' \
-  application_folder=/data/domains/%i/%p; \
-  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=/usr/bin/docker run \
-  --name %p-%i \
-  --link mysql-%i:db \
-  -v /data/domains/%i/%p/wp-content:/app/wp-content \
-  -v /data/domains/%i/%p/.htaccess:/app/.htaccess \
-  --env-file /data/domains/%i/%p/.env \
-  pierreozoux/%p
-ExecReload=/usr/bin/docker restart %p-%i
-ExecStop=/usr/bin/docker stop %p-%i
-
-[Install]
-WantedBy=multi-user.target
diff --git a/unit-files/lamp@.service b/unit-files/lamp@.service
new file mode 100644
index 0000000..d749141
--- /dev/null
+++ b/unit-files/lamp@.service
@@ -0,0 +1,50 @@
+[Unit]
+Description=%p-%i
+
+# Requirements
+Requires=docker.service
+Requires=init@%i.service
+Requires=mysql@%i.service
+Requires=discovery@%i.service
+Requires=backup@%i.timer
+
+# Dependency ordering
+After=docker.service
+After=init@%i.service
+After=mysql@%i.service
+Before=discovery@%i.service
+Before=backup@%i.timer
+
+[Service]
+Restart=always
+EnvironmentFile=/data/domains/%i/.env
+ExecStartPre=-/usr/bin/docker kill %i
+ExecStartPre=-/usr/bin/docker rm %i
+ExecStartPre=/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=/usr/bin/docker run \
+  --name %i \
+  --link mysql-%i:db \
+  -v /data/domains/%i/${APPLICATION}/data:$(cat /data/indiehosters/dockerfiles/services/${APPLICATION}/VOLUME) \
+  -v /data/domains/%i/${APPLICATION}/.htaccess:/app/.htaccess \
+  --env-file /data/domains/%i/${APPLICATION}/.env \
+  pierreozoux/${APPLICATION}
+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 init@%i.service; \
+  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/mysql@.service b/unit-files/mysql@.service
index 6c91e20..b23e0e6 100644
--- a/unit-files/mysql@.service
+++ b/unit-files/mysql@.service
@@ -8,6 +8,9 @@ Requires=docker.service
 After=docker.service
 Before=backup@%i.timer
 
+# Dependency binding
+BindsTo=lamp@%i.service
+
 [Service]
 Restart=always
 ExecStartPre=-/usr/bin/docker kill %p-%i
diff --git a/unit-files/static@.service b/unit-files/static@.service
index 141cfa4..5173d56 100644
--- a/unit-files/static@.service
+++ b/unit-files/static@.service
@@ -4,35 +4,40 @@ Description=%p-%i
 # Requirements
 Requires=docker.service
 Requires=init@%i.service
-Requires=discovery@%p-%i.service
+Requires=discovery@%i.service
 Requires=backup@%i.timer
 
 # Dependency ordering
 After=docker.service
 After=init@%i.service
-Before=discovery@%p-%i.service
+Before=discovery@%i.service
 Before=backup@%i.timer
 
-# Dependency binding
-BindsTo=discovery@%p-%i.service
-
 [Service]
 Restart=always
-ExecStartPre=-/usr/bin/docker kill %p-%i
-ExecStartPre=-/usr/bin/docker rm %p-%i
+EnvironmentFile=/data/domains/%i/.env
+ExecStartPre=-/usr/bin/docker kill %i
+ExecStartPre=-/usr/bin/docker rm %i
 ExecStartPre=/bin/bash -euxc ' \
-  application_folder=/data/domains/%i/static/www-content; \
+  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;'
+  fi'
 
 ExecStart=/usr/bin/docker run \
-  --name %p-%i \
+  --name %i \
   -v /data/domains/%i/%p/www-content:/app \
   pierreozoux/nginx
-ExecReload=/usr/bin/docker restart %p-%i
-ExecStop=/usr/bin/docker stop %p-%i
+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 init@%i.service; \
+  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/wordpress@.service b/unit-files/wordpress@.service
deleted file mode 100644
index 76eb076..0000000
--- a/unit-files/wordpress@.service
+++ /dev/null
@@ -1,45 +0,0 @@
-[Unit]
-Description=%p-%i
-
-# Requirements
-Requires=docker.service
-Requires=init@%i.service
-Requires=mysql@%i.service
-Requires=discovery@%p-%i.service
-Requires=backup@%i.timer
-
-# Dependency ordering
-After=docker.service
-After=init@%i.service
-After=mysql@%i.service
-Before=discovery@%p-%i.service
-Before=backup@%i.timer
-
-# Dependency binding
-BindsTo=mysql@%i.service
-BindsTo=discovery@%p-%i.service
-
-[Service]
-Restart=always
-ExecStartPre=-/usr/bin/docker kill %p-%i
-ExecStartPre=-/usr/bin/docker rm %p-%i
-ExecStartPre=/bin/bash -euxc ' \
-  application_folder=/data/domains/%i/%p; \
-  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=/usr/bin/docker run \
-  --name %p-%i \
-  --link mysql-%i:db \
-  -v /data/domains/%i/%p/wp-content:/app/wp-content \
-  -v /data/domains/%i/%p/.htaccess:/app/.htaccess \
-  --env-file /data/domains/%i/%p/.env \
-  pierreozoux/%p
-ExecReload=/usr/bin/docker restart %p-%i
-ExecStop=/usr/bin/docker stop %p-%i
-
-[Install]
-WantedBy=multi-user.target
-- 
GitLab