#!/sbin/openrc-run : ${SUBCFGDIR:=/srv} DOCKER_COMPOSE_UP_ARGS=${DOCKER_COMPOSE_UP_ARGS-"--no-build --no-recreate --no-deps"} SUBSVC="${SVCNAME#*.}" [ -z "${SUBSVC}" ] && exit 1 : ${SUBCFG:="${SUBCFGDIR}/${SUBSVC}/docker-compose.yml"} DOCOCMD="/usr/bin/docker-compose" export COMPOSE_HTTP_TIMEOUT=300 description="Manage docker services defined in ${SUBCFG}" extra_commands="configtest build" description_configtest="Check configuration via \"docker-compose -f ${SUBCFG} config\"" description_build="Run \"docker-compose -f ${SUBCFG} build\"" depend() { need localmount net docker use dns after docker } configtest() { if ! [ -f "${SUBCFG}" ]; then eerror "The config file ${SUBCFG} does not exist!" return 1 fi if "${DOCOCMD}" -f "${SUBCFG}" config >&/dev/null; then einfo "config: ok" else eerror "config: error" return 1 fi } build() { configtest || return 1 ebegin "Building dockerservice ${SUBSVC}" "${DOCOCMD}" -f "${SUBCFG}" build eend $? } start() { configtest || return 1 ebegin "Starting dockerservice ${SUBSVC}" sleep 5 "${DOCOCMD}" -f "${SUBCFG}" up -d ${DOCKER_COMPOSE_UP_ARGS} eend $? } stop() { ebegin "Stopping dockerservice ${SUBSVC}" "${DOCOCMD}" -f "${SUBCFG}" stop --timeout=300 eend $? } status() { if [ "$("${DOCOCMD}" -f "${SUBCFG}" top | wc -l)" -gt "0" ]; then einfo "status: started" else einfo "status: stopped" return 3 fi }