#!/bin/bash # Multi-profile + default gateway launcher — runs as the CMD via s6-overlay. # # The image's default ENTRYPOINT ["/init", "/opt/hermes/docker/main-wrapper.sh"] # starts the s6 supervision tree, then exec's main-wrapper.sh with the CMD args. # main-wrapper.sh sources the venv, drops to the hermes user via s6-setuidgid, # and exec's this script. # # This script: # 1. Launches per-profile background gateways (HERMES_PROFILES env var) # 2. Starts the default gateway in foreground (keeps the container alive) # # Replaces the old approach of chaining bash -> tini -g -> deprecated entrypoint.sh # which bypassed s6-overlay and caused the SIGTERM crash loop. set -e HERMES_BIN="/opt/hermes/.venv/bin/hermes" # --- Multi-profile gateways (background) --- if [ -n "${HERMES_PROFILES:-}" ]; then echo "[start-hermes] Launching per-profile gateways: ${HERMES_PROFILES}" IFS=',' read -ra PROFILES <<< "${HERMES_PROFILES}" for profile in "${PROFILES[@]}"; do profile="$(echo "${profile}" | xargs)" # trim whitespace [ -z "${profile}" ] && continue echo "[start-hermes] -> background gateway for profile '${profile}'" # No gosu/s6-setuidgid needed — we're already running as the hermes user # (main-wrapper.sh drops privileges before exec'ing this script). nohup "${HERMES_BIN}" --profile "${profile}" gateway run \ >> "/opt/data/logs/gateway-${profile}.log" 2>&1 & done echo "[start-hermes] All profile gateways launched" fi # --- Default gateway (foreground — keeps container alive) --- echo "[start-hermes] Starting default gateway (foreground)" exec "${HERMES_BIN}" gateway run