From 86a5cee5443e692cac084a531d6a0fa960b9f687 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Wed, 12 Dec 2018 17:15:25 +0000 Subject: [PATCH] Very crude dockerization experiment --- docker/Dockerfile | 19 +++++++++++++++++++ docker/build-docker.sh | 2 ++ docker/cleanup | 6 ++++++ docker/docker-broker.sh | 17 +++++++++++++++++ docker/service/.s6-svscan/finish | 13 +++++++++++++ docker/service/avahi-daemon/run | 3 +++ docker/service/dbus-daemon/run | 2 ++ docker/service/syndicate-broker/run | 4 ++++ 8 files changed, 66 insertions(+) create mode 100644 docker/Dockerfile create mode 100755 docker/build-docker.sh create mode 100755 docker/cleanup create mode 100755 docker/docker-broker.sh create mode 100755 docker/service/.s6-svscan/finish create mode 100755 docker/service/avahi-daemon/run create mode 100755 docker/service/dbus-daemon/run create mode 100755 docker/service/syndicate-broker/run diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..60701eb --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,19 @@ +FROM alpine:3.8 + +RUN apk update && apk upgrade +RUN apk add s6 + +RUN apk add --no-cache nodejs npm --repository http://dl-cdn.alpinelinux.org/alpine/edge/main +RUN npm i -g preserves +ENV NODE_PATH=/usr/lib/node_modules + +# RUN apk add --no-cache daemontools --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing + +RUN apk add dbus avahi avahi-tools +RUN rm -f /etc/avahi/services/* + +RUN mkdir -p /run/service +ADD service /run/service + +WORKDIR /run/service +CMD ["s6-svscan", "-St1000", "/run/service"] diff --git a/docker/build-docker.sh b/docker/build-docker.sh new file mode 100755 index 0000000..b91b1fa --- /dev/null +++ b/docker/build-docker.sh @@ -0,0 +1,2 @@ +#!/bin/sh +docker build -t syndicate-js "$(dirname "$0")" diff --git a/docker/cleanup b/docker/cleanup new file mode 100755 index 0000000..6c0552e --- /dev/null +++ b/docker/cleanup @@ -0,0 +1,6 @@ +#!/bin/sh +cd "$(dirname "$0")" +sudo rm -rf service/.s6-svscan/control +sudo rm -rf service/.s6-svscan/lock +sudo rm -rf service/*/event/ +sudo rm -rf service/*/supervise/ diff --git a/docker/docker-broker.sh b/docker/docker-broker.sh new file mode 100755 index 0000000..362f35c --- /dev/null +++ b/docker/docker-broker.sh @@ -0,0 +1,17 @@ +#!/bin/sh +dir="$(dirname "$0")/.." +case "$dir" in + /*) ;; + *) dir="$(pwd)/${dir}" ;; +esac + +networkname=dockerint +if [ -z "$(docker network ls -qf name=${networkname})" ] +then + docker network create --internal ${networkname} +fi + +exec docker run -it --rm \ + --network ${networkname} \ + -v "${dir}":/data \ + syndicate-js diff --git a/docker/service/.s6-svscan/finish b/docker/service/.s6-svscan/finish new file mode 100755 index 0000000..acab531 --- /dev/null +++ b/docker/service/.s6-svscan/finish @@ -0,0 +1,13 @@ +#!/bin/sh +kill -TERM -1 +while true +do + running="$(ps a)" + if [ "$(echo "${running}" | wc -l)" = "3" ] + then + break + else + echo Waiting for services to shut down... + sleep 1 + fi +done diff --git a/docker/service/avahi-daemon/run b/docker/service/avahi-daemon/run new file mode 100755 index 0000000..c6e6c1d --- /dev/null +++ b/docker/service/avahi-daemon/run @@ -0,0 +1,3 @@ +#!/bin/sh +s6-svwait ../dbus-daemon +exec avahi-daemon diff --git a/docker/service/dbus-daemon/run b/docker/service/dbus-daemon/run new file mode 100755 index 0000000..047803d --- /dev/null +++ b/docker/service/dbus-daemon/run @@ -0,0 +1,2 @@ +#!/bin/sh +exec dbus-daemon --system --nofork diff --git a/docker/service/syndicate-broker/run b/docker/service/syndicate-broker/run new file mode 100755 index 0000000..21becb8 --- /dev/null +++ b/docker/service/syndicate-broker/run @@ -0,0 +1,4 @@ +#!/bin/sh +s6-svwait ../avahi-daemon +cd /data/packages/broker +exec node lib/index.js