#!/sbin/openrc-run # credits: # https://gist.github.com/itzwam/2069e935385193207f7e5bea7156e21d # https://github.com/0x17de/dockerservice-openrc : $${HOME:=/home/joeac.net} : $${MODULENAME:=$${RC_SVCNAME##*.}} : $${SRCDIR:=$$HOME/joeac.net} DOCKER_COMPOSE_UP_ARGS=$${DOCKER_COMPOSE_UP_ARGS-"--no-build --no-recreate --no-deps"} [ -z "$${MODULENAME}" ] && exit 1 : $${COMPOSEFILE:="$${SRCDIR}/compose.yml"} : $${MAKEFILE:="$${SRCDIR}/Makefile"} export COMPOSE_HTTP_TIMEOUT=300 description="Manage dockerservices defined in $${COMPOSEFILE}" extra_commands="configtest" description_configtest="Check configuration via \"podman-compose -f $${COMPOSEFILE} config\"" configtest() { if ! [ -f "$${COMPOSEFILE}" ]; then eerror "The docker-compose file $${COMPOSEFILE} does not exist!" return 1 fi if "${COMPOSECMD}" -f "$${COMPOSEFILE}" config >&/dev/null; then einfo "config: ok" else eerror "config: error" return 1 fi } start() { configtest || return 1 ebegin "Starting $${MODULENAME}" "${COMPOSECMD}" -f "$${COMPOSEFILE}" up -d $${DOCKER_COMPOSE_UP_ARGS} $${MODULENAME} eend $$? } stop() { ebegin "Stopping $${MODULENAME}" "${COMPOSECMD}" -f "$${COMPOSEFILE}" down --timeout=5 $${MODULENAME} eend $$? } status() { pods=0 started=0 while read pod; do pod_service="$$(podman inspect $$pod | jq .[0].Config.Labels.[\"com.docker.compose.service\"])" if ! [ "$$pod_service" = "\"$${MODULENAME}\"" ]; then continue fi pods=$$(($$pods+1)) if podman top $$pod &>/dev/null; then einfo "status: [$$pod] started" exit 0 else einfo "status: [$$pod] stopped" exit 3 fi done < <("${COMPOSECMD}" -f "$${COMPOSEFILE}" ps --quiet) einfo "status: no container found for $${MODULENAME}" exit 3 }