66 lines
1.8 KiB
Plaintext
Executable File
66 lines
1.8 KiB
Plaintext
Executable File
#!/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
|
|
}
|