39 lines
1.6 KiB
Bash
39 lines
1.6 KiB
Bash
|
|
#!/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
|