summaryrefslogtreecommitdiff
path: root/openrc/init.d/joeac.net.template
blob: 53763fa83dd4535b5f680ef15f041b37d62bfbb7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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
}