ci(deploy): mount postgres init as a DIRECTORY (fix 'Is a directory')
The single-file bind mount ./scripts/init-db.sh left a stale empty dir in the reused act_runner workspace → mounted as a directory → migrations never ran → empty schemas → backend 28P01/connection failures. Move the init script to deploy/postgres-initdb/00-init.sh and mount the whole DIR at /docker-entrypoint-initdb.d (robust, like the migrations dir). Deploy checkout now 'git clean -ffd' to purge stale workspace dirs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -66,6 +66,9 @@ jobs:
|
|||||||
git config http.extraheader "Authorization: Bearer ${TOKEN}"
|
git config http.extraheader "Authorization: Bearer ${TOKEN}"
|
||||||
git fetch --depth=1 origin "${REF}"
|
git fetch --depth=1 origin "${REF}"
|
||||||
git checkout -f FETCH_HEAD
|
git checkout -f FETCH_HEAD
|
||||||
|
# Remove stale Docker-created bind-mount dirs from a previous run (e.g. an
|
||||||
|
# empty scripts/init-db.sh dir) so they don't shadow real files. -e keeps .env.
|
||||||
|
git clean -ffd -e .env || true
|
||||||
|
|
||||||
- name: Write .env (from ENV_FILE secret)
|
- name: Write .env (from ENV_FILE secret)
|
||||||
run: printf '%s' "$ENV_FILE" > .env
|
run: printf '%s' "$ENV_FILE" > .env
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# FlatRender V2 — run all schema migrations in order on first postgres init.
|
# FlatRender V2 — run all schema migrations in order on first postgres init.
|
||||||
# Mounted at: /docker-entrypoint-initdb.d/00-init.sh
|
# This whole directory is mounted at /docker-entrypoint-initdb.d (a DIRECTORY mount
|
||||||
# Migrations dir mounted at: /migrations (read-only)
|
# is robust; a single-file bind mount can leave a stale empty dir in a reused CI
|
||||||
|
# workspace → "Is a directory"). Migrations dir mounted read-only at /migrations.
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
MIGRATIONS_DIR="/migrations"
|
MIGRATIONS_DIR="/migrations"
|
||||||
@@ -27,7 +27,8 @@ services:
|
|||||||
- pgdata:/var/lib/postgresql/data
|
- pgdata:/var/lib/postgresql/data
|
||||||
# migrations are run once by init-db.sh when the data volume is first created
|
# migrations are run once by init-db.sh when the data volume is first created
|
||||||
- ./backend/db/migrations:/migrations:ro
|
- ./backend/db/migrations:/migrations:ro
|
||||||
- ./scripts/init-db.sh:/docker-entrypoint-initdb.d/00-init.sh:ro
|
# Directory mount (NOT a single file) — robust against stale CI-workspace dirs.
|
||||||
|
- ./deploy/postgres-initdb:/docker-entrypoint-initdb.d:ro
|
||||||
ports:
|
ports:
|
||||||
# HOST_BIND=127.0.0.1 in prod keeps these off the public interface (only
|
# HOST_BIND=127.0.0.1 in prod keeps these off the public interface (only
|
||||||
# Caddy's 80/443 face the internet). Unset → 0.0.0.0 for local/LAN dev.
|
# Caddy's 80/443 face the internet). Unset → 0.0.0.0 for local/LAN dev.
|
||||||
|
|||||||
Reference in New Issue
Block a user