This commit is contained in:
+22
-5
@@ -36,8 +36,28 @@ BACKUP="backups/pig-$(date +%Y%m%d-%H%M%S).sql.gz"
|
||||
sudo docker compose -p pig exec -T db pg_dump -U pig pig | gzip > "$BACKUP"
|
||||
echo " $BACKUP ($(du -h "$BACKUP" | cut -f1))"
|
||||
|
||||
echo "==> Building and starting"
|
||||
sudo docker compose -p pig up -d --build
|
||||
echo "==> Building"
|
||||
sudo docker compose -p pig build app
|
||||
|
||||
echo "==> Starting the database"
|
||||
sudo docker compose -p pig up -d db
|
||||
for _ in $(seq 1 60); do
|
||||
if sudo docker compose -p pig exec -T db pg_isready -U pig -d pig > /dev/null; then break; fi
|
||||
sleep 1
|
||||
done
|
||||
if ! sudo docker compose -p pig exec -T db pg_isready -U pig -d pig > /dev/null; then
|
||||
echo "ERROR: database did not become ready within 60 seconds" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "==> Migrating before the schema-dependent app starts"
|
||||
# A release may query a newly introduced table during startup. Running the
|
||||
# migration from a one-off container prevents that app from crash-looping
|
||||
# before an `exec`-based migration can reach it.
|
||||
sudo docker compose -p pig run --rm --no-deps app npx tsx packages/db/src/migrate.ts
|
||||
|
||||
echo "==> Starting the app"
|
||||
sudo docker compose -p pig up -d app
|
||||
|
||||
echo "==> Waiting for health"
|
||||
for _ in $(seq 1 60); do
|
||||
@@ -45,9 +65,6 @@ for _ in $(seq 1 60); do
|
||||
sleep 1
|
||||
done
|
||||
|
||||
echo "==> Migrating"
|
||||
sudo docker compose -p pig exec -T app npx tsx packages/db/src/migrate.ts
|
||||
|
||||
echo "==> Verifying"
|
||||
if curl -sf http://127.0.0.1:8920/api/health | grep -q '"ok":true'; then
|
||||
echo " health ok"
|
||||
|
||||
Reference in New Issue
Block a user