#!/usr/bin/env sh # Configurable Variables DOCKER_SOCK_PATH="${DOCKER_SOCK_PATH:-/tmp/docker.sock}" NETWORK_NAME="${NETWORK_NAME:-proxy}" TEMPLATER_PATH="${TEMPLATER_PATH:-/docker-templater.sh}" TEMPLATE_FOLDER_PATH="${TEMPLATE_FOLDER_PATH:-/templates}" query_docker () { curl --unix-socket $DOCKER_SOCK_PATH --silent -g http://v1.41/$1$2 } update_templates() { CONTAINER_LIST=$(query_docker "containers/json" "?filters={%22network%22:[%22${NETWORK_NAME}%22],%22status%22:[%22running%22]}") if [ "${CONTAINER_LIST}" != "${OLD_CONTAINER_LIST}" ] then for template in "${TEMPLATE_FOLDER_PATH}"/* do if ! "${TEMPLATER_PATH}" "${template}" "${CONTAINER_LIST}" then echo "Error Processing Template: ${template}" fi done OLD_CONTAINER_LIST="${CONTAINER_LIST}" fi } # Initial Generation update_templates # cannot filter because reailine no longer recognized lines otherwise (check how IFS changes) query_docker "events" | while true do read -r; # wait for related events to finish while [ $? -eq 0 ] do read -t 8 -r done update_templates done