uses custom COMPOSECMD in joeac.net openrc services
This commit is contained in:
@@ -2,17 +2,6 @@ CPU_ARCH := $(if $(shell which arch 2>/dev/null),\
|
|||||||
$(shell arch),\
|
$(shell arch),\
|
||||||
$(shell lscpu | grep ^Architecture: | sed "s/^Architecture:[[:space:]]*\([[:alnum:][:punct:]]\+\).*/\1/"))
|
$(shell lscpu | grep ^Architecture: | sed "s/^Architecture:[[:space:]]*\([[:alnum:][:punct:]]\+\).*/\1/"))
|
||||||
IMAGE_PREFIX := $(if $(filter armv7%,$(CPU_ARCH)),armv7/)
|
IMAGE_PREFIX := $(if $(filter armv7%,$(CPU_ARCH)),armv7/)
|
||||||
COMPOSE_CMD := \
|
|
||||||
ALPINE_VERSION="$(ALPINE_VERSION)" \
|
|
||||||
IMAGE_PREFIX="$(IMAGE_PREFIX)" \
|
|
||||||
GEMINI_CERTIFICATES_DIR="$(GEMINI_CERTIFICATES_DIR)" \
|
|
||||||
GEMINI_COMITIUM_DATA_DIR="$(GEMINI_COMITIUM_DATA_DIR)" \
|
|
||||||
ETHERPAD_DATA_DIR="$(ETHERPAD_DATA_DIR)" \
|
|
||||||
ETHERPAD_VERSION="$(ETHERPAD_VERSION)" \
|
|
||||||
VAULTWARDEN_DATA_DIR="$(VAULTWARDEN_DATA_DIR)" \
|
|
||||||
LOCAL_SMTP_PORT=$(PORT_smtp) \
|
|
||||||
$(foreach module,$(ALL_MODULES),$(call capitalise,$(module))_PORT=$(PORT_$(module))) \
|
|
||||||
podman-compose
|
|
||||||
REGISTRY_DOMAIN := git.joeac.net
|
REGISTRY_DOMAIN := git.joeac.net
|
||||||
REGISTRY_USER := joeac
|
REGISTRY_USER := joeac
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -50,10 +50,10 @@ $(foreach module,$(MODULES),$(eval $(openrc_add_rule)))
|
|||||||
$(foreach module,$(MODULES),$(eval $(openrc_start_rule)))
|
$(foreach module,$(MODULES),$(eval $(openrc_start_rule)))
|
||||||
$(foreach module,$(MODULES),$(eval $(openrc_restart_rule)))
|
$(foreach module,$(MODULES),$(eval $(openrc_restart_rule)))
|
||||||
|
|
||||||
~/.config/rc/init.d/joeac.net: openrc/init.d/joeac.net ~/.config/rc/init.d ~/.config/rc/runlevels/default /etc/init.d/user.$(USER) /etc/conf.d/user.$(USER)
|
~/.config/rc/init.d/joeac.net: openrc/init.d/joeac.net.template ~/.config/rc/init.d ~/.config/rc/runlevels/default /etc/init.d/user.$(USER) /etc/conf.d/user.$(USER)
|
||||||
rm -f ~/.config/rc/init.d/joeac.net; \
|
rm -f ~/.config/rc/init.d/joeac.net; \
|
||||||
mkdir -p ~/.config/rc/init.d; \
|
mkdir -p ~/.config/rc/init.d; \
|
||||||
cp openrc/init.d/joeac.net ~/.config/rc/init.d/joeac.net
|
COMPOSECMD="$(COMPOSE_CMD)" envsubst -i openrc/init.d/joeac.net.template -o ~/.config/rc/init.d/joeac.net
|
||||||
|
|
||||||
~/.config/rc/init.d:
|
~/.config/rc/init.d:
|
||||||
mkdir -p ~/.config/rc/init.d
|
mkdir -p ~/.config/rc/init.d
|
||||||
|
|||||||
@@ -53,6 +53,18 @@ INSTALL_RULES := $(foreach module,$(MODULES),install_$(module))
|
|||||||
REINSTALL_RULES := $(foreach module,$(MODULES),reinstall_$(module))
|
REINSTALL_RULES := $(foreach module,$(MODULES),reinstall_$(module))
|
||||||
UNINSTALL_RULES := $(foreach module,$(MODULES),uninstall_$(module))
|
UNINSTALL_RULES := $(foreach module,$(MODULES),uninstall_$(module))
|
||||||
|
|
||||||
|
COMPOSE_CMD := \
|
||||||
|
ALPINE_VERSION="$(ALPINE_VERSION)" \
|
||||||
|
IMAGE_PREFIX="$(IMAGE_PREFIX)" \
|
||||||
|
GEMINI_CERTIFICATES_DIR="$(GEMINI_CERTIFICATES_DIR)" \
|
||||||
|
GEMINI_COMITIUM_DATA_DIR="$(GEMINI_COMITIUM_DATA_DIR)" \
|
||||||
|
ETHERPAD_DATA_DIR="$(ETHERPAD_DATA_DIR)" \
|
||||||
|
ETHERPAD_VERSION="$(ETHERPAD_VERSION)" \
|
||||||
|
VAULTWARDEN_DATA_DIR="$(VAULTWARDEN_DATA_DIR)" \
|
||||||
|
LOCAL_SMTP_PORT=$(PORT_smtp) \
|
||||||
|
$(foreach module,$(ALL_MODULES),$(call capitalise,$(module))_PORT=$(PORT_$(module))) \
|
||||||
|
podman-compose
|
||||||
|
|
||||||
$(foreach module,$(ALL_NGINX_MODULES), \
|
$(foreach module,$(ALL_NGINX_MODULES), \
|
||||||
$(if $(SUBDOMAIN_$(module)),, \
|
$(if $(SUBDOMAIN_$(module)),, \
|
||||||
$(error $(module) is declared as an nginx module, but SUBDOMAIN_$(module) is not set)))
|
$(error $(module) is declared as an nginx module, but SUBDOMAIN_$(module) is not set)))
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ DOCKER_COMPOSE_UP_ARGS=${DOCKER_COMPOSE_UP_ARGS-"--no-build --no-recreate --no-d
|
|||||||
[ -z "${MODULENAME}" ] && exit 1
|
[ -z "${MODULENAME}" ] && exit 1
|
||||||
: ${COMPOSEFILE:="${SRCDIR}/compose.yml"}
|
: ${COMPOSEFILE:="${SRCDIR}/compose.yml"}
|
||||||
: ${MAKEFILE:="${SRCDIR}/Makefile"}
|
: ${MAKEFILE:="${SRCDIR}/Makefile"}
|
||||||
COMPOSECMD="/usr/bin/podman-compose"
|
|
||||||
export COMPOSE_HTTP_TIMEOUT=300
|
export COMPOSE_HTTP_TIMEOUT=300
|
||||||
|
|
||||||
description="Manage dockerservices defined in ${COMPOSEFILE}"
|
description="Manage dockerservices defined in ${COMPOSEFILE}"
|
||||||
|
|||||||
Executable
+65
@@ -0,0 +1,65 @@
|
|||||||
|
#!/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
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user