Update entrypoint.sh

This commit is contained in:
Felipe Domingues 2026-04-29 07:23:29 -03:00 committed by GitHub
parent 720e3faf6e
commit 53f7ef84d2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,51 +1,58 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -Eeuo pipefail
HERMES_DATA_DIR="${HERMES_DATA_DIR:-/opt/data}" INTERNAL_HOST="${INTERNAL_HOST:-127.0.0.1}"
HERMES_CONFIG_DIR="${HERMES_DATA_DIR}/.hermes" INTERNAL_PORT="${INTERNAL_PORT:-8000}"
SOUL_FILE="${HERMES_CONFIG_DIR}/SOUL.md" PUBLIC_HOST="${PUBLIC_HOST:-0.0.0.0}"
PUBLIC_PORT="${PORT:-${PUBLIC_PORT:-8642}}"
mkdir -p "${HERMES_CONFIG_DIR}" HERMES_HOME="${HERMES_HOME:-/opt/data/.hermes}"
SOUL_PATH="${SOUL_PATH:-$HERMES_HOME/SOUL.md}"
mkdir -p "$HERMES_HOME"
# Aplica override do SOUL.md se a env estiver setada
if [ -n "${HERMES_SOUL_OVERRIDE:-}" ]; then if [ -n "${HERMES_SOUL_OVERRIDE:-}" ]; then
echo "[entrypoint] Applying HERMES_SOUL_OVERRIDE to ${SOUL_FILE}" echo "[entrypoint] Applying HERMES_SOUL_OVERRIDE to $SOUL_PATH"
printf '%s' "${HERMES_SOUL_OVERRIDE}" > "${SOUL_FILE}" printf '%s\n' "$HERMES_SOUL_OVERRIDE" > "$SOUL_PATH"
fi fi
# Garante permissões corretas (caso o volume tenha sido montado externamente) echo "[entrypoint] Hermes interno: $INTERNAL_HOST:$INTERNAL_PORT"
chown -R hermes:hermes "${HERMES_DATA_DIR}" || true echo "[entrypoint] Proxy público: $PUBLIC_HOST:$PUBLIC_PORT"
INTERNAL_HOST="127.0.0.1"
INTERNAL_PORT="8000"
PUBLIC_HOST="0.0.0.0"
PUBLIC_PORT="${PORT:-8642}"
echo "[entrypoint] Hermes interno: ${INTERNAL_HOST}:${INTERNAL_PORT}"
echo "[entrypoint] Proxy público: ${PUBLIC_HOST}:${PUBLIC_PORT}"
echo "[entrypoint] Iniciando Hermes original..." echo "[entrypoint] Iniciando Hermes original..."
# Inicia o Hermes original em background como usuário hermes hermes dashboard \
su -s /bin/bash hermes -c "cd /opt/hermes && hermes dashboard --host "$HERMES_INTERNAL_HOST" --port "$HERMES_INTERNAL_PORT" --no-open && --host "$INTERNAL_HOST" \
HERMES_PID=$! --port "$INTERNAL_PORT" \
--no-open &
HERMES_PID="$!"
echo "[entrypoint] Aguardando Hermes responder em $INTERNAL_HOST:$INTERNAL_PORT..."
# Aguarda Hermes ficar pronto
echo "[entrypoint] Aguardando Hermes responder em ${INTERNAL_HOST}:${INTERNAL_PORT}..."
for i in $(seq 1 60); do for i in $(seq 1 60); do
if ! kill -0 "${HERMES_PID}" 2>/dev/null; then if ! kill -0 "$HERMES_PID" 2>/dev/null; then
echo "[entrypoint] ERRO: Hermes morreu antes de ficar pronto" echo "[entrypoint] ERRO: Hermes morreu antes de ficar pronto"
wait "$HERMES_PID"
exit 1 exit 1
fi fi
if curl -sf "http://${INTERNAL_HOST}:${INTERNAL_PORT}/health" > /dev/null 2>&1; then
echo "[entrypoint] Hermes pronto!" if curl -fsS "http://$INTERNAL_HOST:$INTERNAL_PORT" >/dev/null 2>&1; then
echo "[entrypoint] Hermes pronto"
break break
fi fi
sleep 1 sleep 1
done done
# Inicia o proxy / skills_api público if ! kill -0 "$HERMES_PID" 2>/dev/null; then
echo "[entrypoint] Iniciando skills_api em ${PUBLIC_HOST}:${PUBLIC_PORT}..." echo "[entrypoint] ERRO: Hermes morreu antes de ficar pronto"
exec python -m skills_api \ wait "$HERMES_PID"
--host "${PUBLIC_HOST}" \ exit 1
--port "${PUBLIC_PORT}" \ fi
--upstream "http://${INTERNAL_HOST}:${INTERNAL_PORT}"
echo "[entrypoint] Iniciando proxy público em $PUBLIC_HOST:$PUBLIC_PORT..."
exec python /opt/hermes-custom/skills_api.py \
--host "$PUBLIC_HOST" \
--port "$PUBLIC_PORT" \
--target "http://$INTERNAL_HOST:$INTERNAL_PORT"