diff --git a/service b/service new file mode 100644 index 0000000..354b3be --- /dev/null +++ b/service @@ -0,0 +1,63 @@ +#!/bin/sh +SERVICE_FILE=$1 +DOCKER_REGISTRY_URL=${DOCKER_REGISTRY_URL:-registry.format.hu} +SETUP_VERSION=${SETUP_VERSION:-latest} + +if [[ -n "$DOCKER_REGISTRY_URL" && "$DOCKER_REGISTRY_URL" != "null" ]]; then + SETUP="/setup" +else + SETUP="setup" + DOCKER_REGISTRY_URL="" +fi + +DNS_DIR="/etc/system/data/dns" +DNS="--env DNS_DIR=$DNS_DIR" +DNS_PATH="--volume $DNS_DIR:/etc/system/data/dns:rw" +HOST_FILE=$DNS_DIR"/hosts.local" +mkdir -p $DNS_DIR +touch $HOST_FILE; + +VOLUME_MOUNTS=""; + +if [ -d /etc/user/data ]; then + VOLUME_MOUNTS=$VOLUME_MOUNTS" -v /etc/user/data:/etc/user/data" +fi + +if [ -d /etc/user/config ]; then + VOLUME_MOUNTS=$VOLUME_MOUNTS" -v /etc/user/config:/etc/user/config" +fi + +if [ -d /etc/user/secret ]; then + VOLUME_MOUNTS=$VOLUME_MOUNTS" -v /etc/user/secret:/etc/user/secret" +fi + +if [ -d /etc/system/data ]; then + VOLUME_MOUNTS=$VOLUME_MOUNTS" -v /etc/system/data:/etc/system/data" +fi + +if [ -d /etc/system/config ]; then + VOLUME_MOUNTS=$VOLUME_MOUNTS" -v /etc/system/config:/etc/system/config" +fi + +if [ -d /etc/system/log ]; then + VOLUME_MOUNTS=$VOLUME_MOUNTS" -v /etc/system/log:/etc/system/log" +fi + +CA_PATH=/etc/system/data/ssl/certs +CA="--env CA_PATH=$CA_PATH" +CA_FILE="--volume $CA_PATH:$CA_PATH:ro" +mkdir -p $CA_PATH + +service_exec="/usr/bin/docker run --rm \ +$DNS \ +$CA \ +-w /etc/user/config/services/ \ +$VOLUME_MOUNTS \ +-v /var/run/docker.sock:/var/run/docker.sock \ +--env VOLUME_MOUNTS="$(echo $VOLUME_MOUNTS | base64 -w0)" \ +--env DOCKER_REGISTRY_URL=$DOCKER_REGISTRY_URL \ +--env SETUP_VERSION=$SETUP_VERSION \ +--env HOST_FILE=$HOST_FILE \ +$DOCKER_REGISTRY_URL$SETUP:$SETUP_VERSION" + +$service_exec $SERVICE_FILE start