This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
postgres_pid=''
|
||||
web_pid=''
|
||||
worker_pid=''
|
||||
|
||||
stop_services() {
|
||||
[ -z "$web_pid" ] || kill -TERM "$web_pid" 2>/dev/null || true
|
||||
[ -z "$worker_pid" ] || kill -TERM "$worker_pid" 2>/dev/null || true
|
||||
[ -z "$postgres_pid" ] || kill -TERM "$postgres_pid" 2>/dev/null || true
|
||||
wait || true
|
||||
}
|
||||
|
||||
trap stop_services INT TERM EXIT
|
||||
|
||||
: "${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}"
|
||||
: "${SESSION_SECRET:?SESSION_SECRET is required}"
|
||||
: "${INTEGRATION_ENCRYPTION_KEY:?INTEGRATION_ENCRYPTION_KEY is required}"
|
||||
: "${BOOTSTRAP_TOKEN:?BOOTSTRAP_TOKEN is required}"
|
||||
|
||||
export POSTGRES_DB="${POSTGRES_DB:-devrunbook}"
|
||||
export POSTGRES_USER="${POSTGRES_USER:-devrunbook}"
|
||||
export DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@127.0.0.1:5432/${POSTGRES_DB}"
|
||||
export CONTENT_ROOT="${CONTENT_ROOT:-/content}"
|
||||
export ARTIFACT_ROOT="${ARTIFACT_ROOT:-/config/artifacts}"
|
||||
export INTEGRATION_ENCRYPTION_KEY_VERSION="${INTEGRATION_ENCRYPTION_KEY_VERSION:-v1}"
|
||||
if [ -z "${INTEGRATION_ENCRYPTION_OLD_KEYS:-}" ]; then
|
||||
export INTEGRATION_ENCRYPTION_OLD_KEYS='{}'
|
||||
fi
|
||||
|
||||
mkdir -p "$PGDATA" "$ARTIFACT_ROOT" /config/operator-content
|
||||
chown -R postgres:postgres "$PGDATA"
|
||||
chown -R node:node "$ARTIFACT_ROOT" /config/operator-content
|
||||
chmod 0700 "$PGDATA"
|
||||
|
||||
docker-entrypoint.sh postgres &
|
||||
postgres_pid=$!
|
||||
|
||||
attempt=0
|
||||
until pg_isready -h 127.0.0.1 -U "$POSTGRES_USER" -d "$POSTGRES_DB" >/dev/null 2>&1; do
|
||||
attempt=$((attempt + 1))
|
||||
if [ "$attempt" -ge 60 ]; then
|
||||
echo "PostgreSQL did not become ready" >&2
|
||||
exit 1
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
gosu node ./packages/db/node_modules/.bin/tsx packages/db/src/migrate.ts
|
||||
|
||||
gosu node node apps/web/.next/standalone/apps/web/server.js &
|
||||
web_pid=$!
|
||||
gosu node node apps/worker/dist/index.js &
|
||||
worker_pid=$!
|
||||
|
||||
while kill -0 "$postgres_pid" 2>/dev/null \
|
||||
&& kill -0 "$web_pid" 2>/dev/null \
|
||||
&& kill -0 "$worker_pid" 2>/dev/null; do
|
||||
sleep 2
|
||||
done
|
||||
|
||||
echo "A required DevRunbook process stopped unexpectedly" >&2
|
||||
exit 1
|
||||
Reference in New Issue
Block a user