feat(container): support comma-separated roles

Allow s6 services to start for specific roles like horizon,
scheduler, nightwatch, and flux while keeping all as the default.
This commit is contained in:
Andras Bacsai committed 2026-06-15 23:36:47 +02:00
1 parent dcd325dc44
commit 762daf83a1
14 files changed
+163 -108

No files matched your search

@@ -2,19 +2,13 @@
cd /var/www/html
role="${COOLIFY_CONTAINER_ROLE:-}"
if [ -z "$role" ]; then
role="$(grep -E '^COOLIFY_CONTAINER_ROLE=' .env 2>/dev/null | tail -n1 | cut -d= -f2- | tr -d '"' | tr -d "'")"
fi
role="${role:-all}"
. /etc/s6-overlay/scripts/container-role
role="$(coolify_container_role_value)"
case "$role" in
all|flux) ;;
*)
echo " INFO Flux is disabled for role '$role', sleeping."
exec sleep infinity
;;
esac
if ! coolify_container_has_role flux; then
echo " INFO Flux is disabled for role '$role', sleeping."
exec sleep infinity
fi
if grep -qE '^COOLIFY_FLUX_ENABLED=false' .env 2>/dev/null || [ "${COOLIFY_FLUX_ENABLED:-}" = "false" ]; then
echo " INFO Flux is disabled, sleeping."
@@ -2,19 +2,13 @@
cd /var/www/html
role="${COOLIFY_CONTAINER_ROLE:-}"
if [ -z "$role" ]; then
role="$(grep -E '^COOLIFY_CONTAINER_ROLE=' .env 2>/dev/null | tail -n1 | cut -d= -f2- | tr -d '"' | tr -d "'")"
fi
role="${role:-all}"
. /etc/s6-overlay/scripts/container-role
role="$(coolify_container_role_value)"
case "$role" in
all|worker) ;;
*)
echo " INFO Horizon is disabled for role '$role', sleeping."
exec sleep infinity
;;
esac
if ! coolify_container_has_role worker && ! coolify_container_has_role horizon; then
echo " INFO Horizon is disabled for role '$role', sleeping."
exec sleep infinity
fi
if grep -qE '^HORIZON_ENABLED=false' .env 2>/dev/null; then
echo " INFO Horizon is disabled, sleeping."
@@ -2,19 +2,13 @@
cd /var/www/html
role="${COOLIFY_CONTAINER_ROLE:-}"
if [ -z "$role" ]; then
role="$(grep -E '^COOLIFY_CONTAINER_ROLE=' .env 2>/dev/null | tail -n1 | cut -d= -f2- | tr -d '"' | tr -d "'")"
fi
role="${role:-all}"
. /etc/s6-overlay/scripts/container-role
role="$(coolify_container_role_value)"
case "$role" in
all|worker) ;;
*)
echo " INFO Nightwatch is disabled for role '$role', sleeping."
exec sleep infinity
;;
esac
if ! coolify_container_has_role worker && ! coolify_container_has_role nightwatch && ! coolify_container_has_role nightwatch-agent; then
echo " INFO Nightwatch is disabled for role '$role', sleeping."
exec sleep infinity
fi
if grep -qE '^NIGHTWATCH_ENABLED=true' .env 2>/dev/null; then
echo " INFO Nightwatch is enabled, starting..."
@@ -2,19 +2,13 @@
cd /var/www/html
role="${COOLIFY_CONTAINER_ROLE:-}"
if [ -z "$role" ]; then
role="$(grep -E '^COOLIFY_CONTAINER_ROLE=' .env 2>/dev/null | tail -n1 | cut -d= -f2- | tr -d '"' | tr -d "'")"
fi
role="${role:-all}"
. /etc/s6-overlay/scripts/container-role
role="$(coolify_container_role_value)"
case "$role" in
all|worker) ;;
*)
echo " INFO Scheduler worker is disabled for role '$role', sleeping."
exec sleep infinity
;;
esac
if ! coolify_container_has_role worker && ! coolify_container_has_role scheduler && ! coolify_container_has_role scheduler-worker; then
echo " INFO Scheduler worker is disabled for role '$role', sleeping."
exec sleep infinity
fi
if grep -qE '^SCHEDULER_ENABLED=false' .env 2>/dev/null; then
echo " INFO Scheduler is disabled, sleeping."
+26
View File
@@ -0,0 +1,26 @@
#!/bin/sh
coolify_container_role_value() {
role="${COOLIFY_CONTAINER_ROLE:-}"
if [ -z "$role" ]; then
role="$(grep -E '^COOLIFY_CONTAINER_ROLE=' .env 2>/dev/null | tail -n1 | cut -d= -f2- | tr -d '"' | tr -d "'")"
fi
printf '%s\n' "${role:-all}"
}
coolify_container_has_role() {
wanted_role="$1"
roles="$(coolify_container_role_value | tr '[:upper:]' '[:lower:]' | tr ',' ' ')"
for role in $roles; do
case "$role" in
all|"$wanted_role")
return 0
;;
esac
done
return 1
}