summaryrefslogtreecommitdiff
path: root/images/runit-edge
diff options
context:
space:
mode:
Diffstat (limited to 'images/runit-edge')
-rw-r--r--images/runit-edge/Dockerfile14
-rw-r--r--images/runit-edge/runit/run17
2 files changed, 31 insertions, 0 deletions
diff --git a/images/runit-edge/Dockerfile b/images/runit-edge/Dockerfile
new file mode 100644
index 0000000..d0c2040
--- /dev/null
+++ b/images/runit-edge/Dockerfile
@@ -0,0 +1,14 @@
+FROM alpine:edge
+
+RUN apk add --no-cache sudo shadow runit
+
+# runit
+ADD runit/run /app/runit/run
+ONBUILD ADD service /etc/service
+# Make sure all service and log files are executable
+ONBUILD RUN find -L /etc/service \( -name run -or -name finish -or -name down \) -exec chmod +x {} \;
+
+# If supplied as "ENTRYPOINT foo" it will be wrapped in "/bin/sh -c",
+# but that will swallow signals and we rely on those
+ONBUILD RUN chmod +x /app/runit/run
+ONBUILD ENTRYPOINT ["/app/runit/run"]
diff --git a/images/runit-edge/runit/run b/images/runit-edge/runit/run
new file mode 100644
index 0000000..c3861c2
--- /dev/null
+++ b/images/runit-edge/runit/run
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+echo "Found services:"
+find /etc/service -mindepth 1 -maxdepth 1
+
+/sbin/runsvdir /etc/service &
+runsvdir_pid=$!
+echo "Started runit as $runsvdir_pid"
+
+runit_stop() {
+ echo "Stopping runit"
+ # "If runsvdir receives HUP, it sends TERM to each runsv process"
+ kill -HUP $runsvdir_pid
+}
+
+trap "runit_stop" SIGTERM
+wait