summaryrefslogtreecommitdiff
path: root/openrc/joeac.net
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2026-06-25 06:49:00 +0100
committerJoe Carstairs <me@joeac.net>2026-06-25 11:17:01 +0100
commitad8a8c3cac2235aef8e13d2fcc50161026364c37 (patch)
tree3b0cadcde415bc44ac03a6d7b31b387973212367 /openrc/joeac.net
parent46596fc5f65193dfa126c824d0ca4ca8fab42a6d (diff)
openrc/joeac.net
Diffstat (limited to 'openrc/joeac.net')
-rwxr-xr-xopenrc/joeac.net78
1 files changed, 78 insertions, 0 deletions
diff --git a/openrc/joeac.net b/openrc/joeac.net
new file mode 100755
index 0000000..7041603
--- /dev/null
+++ b/openrc/joeac.net
@@ -0,0 +1,78 @@
+#!/sbin/openrc-run
+# credits:
+# https://gist.github.com/itzwam/2069e935385193207f7e5bea7156e21d
+# https://github.com/0x17de/dockerservice-openrc
+
+: ${JOEACNET_USER:=$(whoami)}
+: ${SRCDIR:=/usr/local/lib/joeac.net}
+DOCKER_COMPOSE_UP_ARGS=${DOCKER_COMPOSE_UP_ARGS-"--no-build --no-recreate --no-deps"}
+
+[ -z "${SVCNAME}" ] && exit 1
+: ${COMPOSEFILE:="${SRCDIR}/compose.yml"}
+: ${MAKEFILE:="${SRCDIR}/Makefile"}
+COMPOSECMD="/usr/bin/podman-compose"
+export COMPOSE_HTTP_TIMEOUT=300
+
+description="Manage dockerservices defined in ${COMPOSEFILE}"
+extra_commands="configtest make"
+description_configtest="Check configuration via \"podman-compose -f ${COMPOSEFILE} config\""
+description_make="Run \"make --makefile ${MAKEFILE}\""
+
+depend() {
+ need localmount net podman
+ use dns
+ after podman
+}
+
+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
+}
+
+make() {
+ configtest || return 1
+ ebegin "Making ${SVCNAME}"
+ make --makefile "${MAKEFILE}"
+ eend $?
+}
+
+start() {
+ configtest || return 1
+ ebegin "Starting ${SVCNAME}"
+ "${COMPOSECMD}" -f "${COMPOSEFILE}" up -d ${DOCKER_COMPOSE_UP_ARGS}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping ${SVCNAME}"
+ "${COMPOSECMD}" -f "${COMPOSEFILE}" stop --timeout=300
+ eend $?
+}
+
+status() {
+ pods=0
+ started=0
+ while read pod; do
+ pods=$(($pods+1))
+ if podman top $pod &>/dev/null; then
+ einfo "status: [$pod] started"
+ started=$(($started+1))
+ else
+ einfo "status: [$pod] stopped"
+ fi
+ done < <("${COMPOSECMD}" -f "${COMPOSEFILE}" ps --quiet)
+ if [ $started -eq $pods ]; then
+ einfo "status: started"
+ else
+ einfo "status: stopped"
+ return 3
+ fi
+}