65 lines
1.9 KiB
Bash
65 lines
1.9 KiB
Bash
#!/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
|