2026-10-03 12:30:05 +02:00
|
|
|
# Services several peers share: one Postgres (each peer gets its own database) and one Redis (each its own db number).
|
|
|
|
|
shared_postgres_up() {
|
|
|
|
|
podman container exists pasture-postgres && return 0
|
|
|
|
|
podman run -d --replace --name pasture-postgres --network $net --network-alias postgres \
|
|
|
|
|
-e POSTGRES_USER=pasture -e POSTGRES_PASSWORD=pasture -e POSTGRES_DB=pasture docker.io/library/postgres:17-alpine >/dev/null
|
|
|
|
|
for _ in $(seq 1 60); do podman exec pasture-postgres pg_isready -U pasture >/dev/null 2>&1 && return 0; sleep 1; done
|
|
|
|
|
echo "postgres did not start" >&2; return 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
shared_redis_up() {
|
|
|
|
|
podman container exists pasture-redis && return 0
|
|
|
|
|
podman run -d --replace --name pasture-redis --network $net --network-alias redis docker.io/library/redis:7-alpine >/dev/null
|
|
|
|
|
}
|
2026-10-05 00:32:54 +02:00
|
|
|
|
|
|
|
|
# pg_db <name> [extension...]: a database of the shared Postgres for one peer, with the extensions it needs
|
|
|
|
|
pg_db() {
|
|
|
|
|
local name=$1; shift
|
|
|
|
|
podman exec pasture-postgres sh -c "psql -U pasture -tc \"select 1 from pg_database where datname='$name'\" | grep -q 1 || createdb -U pasture $name"
|
|
|
|
|
for ext in "$@"; do
|
|
|
|
|
podman exec pasture-postgres psql -U pasture -d "$name" -qc "create extension if not exists \"$ext\";" >/dev/null
|
|
|
|
|
done
|
|
|
|
|
}
|