docker/entrypoint.sh estava versionado com modo 100644. Num build Linux o ENTRYPOINT em forma exec falharia com permission denied. O mesmo vale para .github/scripts/async-journey.sh, usado pelo job image do CI. Sem .gitattributes, um checkout com core.autocrlf=true grava os .sh em CRLF, e uma imagem construída a partir dessa cópia quebra o #!/bin/sh. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
48 lines
1.5 KiB
Bash
Executable File
48 lines
1.5 KiB
Bash
Executable File
#!/bin/sh
|
|
# Entrada única da imagem. Mantém os comandos curtos e garante que todos os
|
|
# scripts operacionais rodem no MESMO processo do contêiner.
|
|
#
|
|
# Por que `node --import tsx` e não o CLI do tsx: o CLI cria um processo filho,
|
|
# e o SIGTERM do `docker stop` pararia no pai. O worker precisa receber o sinal
|
|
# para esperar o tick corrente e liberar o lock no `finally`.
|
|
set -eu
|
|
|
|
TSX="--import=tsx"
|
|
|
|
usage() {
|
|
cat <<'EOF'
|
|
uso: entrypoint.sh <comando> [args]
|
|
|
|
web servidor Next (saída standalone)
|
|
worker processo de fila
|
|
migrate [--dry-run]
|
|
seed-staging
|
|
flag <workspace_id> on|off
|
|
cleanup
|
|
verify-config
|
|
check-bucket
|
|
smoke
|
|
worker-health confere o heartbeat do worker (healthcheck do contêiner)
|
|
exec <cmd...> qualquer outro comando
|
|
EOF
|
|
}
|
|
|
|
cmd="${1:-web}"
|
|
[ $# -gt 0 ] && shift || true
|
|
|
|
case "$cmd" in
|
|
web) exec node server.js ;;
|
|
worker) exec node $TSX scripts/worker.ts ;;
|
|
migrate) exec node $TSX scripts/migrate.ts "$@" ;;
|
|
seed-staging) exec node $TSX scripts/seed-staging.ts "$@" ;;
|
|
flag) exec node $TSX scripts/set-flag.ts "$@" ;;
|
|
cleanup) exec node $TSX scripts/cleanup-temp.ts "$@" ;;
|
|
verify-config) exec node $TSX scripts/verify-config.ts ;;
|
|
check-bucket) exec node $TSX scripts/check-bucket.ts ;;
|
|
smoke) exec node $TSX scripts/smoke-staging.ts ;;
|
|
worker-health) exec node docker/worker-health.mjs ;;
|
|
exec) exec "$@" ;;
|
|
-h|--help|help) usage ;;
|
|
*) echo "comando desconhecido: $cmd" >&2; usage >&2; exit 2 ;;
|
|
esac
|