44 lines
1.7 KiB
YAML
44 lines
1.7 KiB
YAML
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: todo-db-scripts
|
|
labels:
|
|
kiamol: ch09
|
|
data:
|
|
wait-service.sh: |-
|
|
#!/bin/sh
|
|
if [ "$HOSTNAME" == "$POSTGRES_PRIMARY_NAME" ]; then
|
|
echo '** Postgres primary **'
|
|
else
|
|
echo '** Postgres standby - waiting on DNS for primary **'
|
|
until nslookup ${POSTGRES_PRIMARY_FQDN}; do echo Waiting for ${POSTGRES_PRIMARY_FQDN}; sleep 1; done
|
|
fi
|
|
initialize-replication.sh: |-
|
|
#!/bin/bash
|
|
if [ "$HOSTNAME" == "$POSTGRES_PRIMARY_NAME" ]; then
|
|
echo '** Postgres primary - creating replication user script **'
|
|
cp /scripts/create-replica-user.sh /docker-entrypoint-initdb.d/create-replica-user.sh
|
|
ls -l /docker-entrypoint-initdb.d
|
|
else
|
|
echo '** Postgres standby - waiting on primary **'
|
|
until pg_isready -h "$POSTGRES_PRIMARY_FQDN"; do echo Waiting for db to be ready; sleep 1; done
|
|
fi
|
|
create-replica-user.sh: |-
|
|
#!/bin/bash
|
|
set -e
|
|
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
|
CREATE ROLE replication WITH REPLICATION PASSWORD '$PGPASSWORD' LOGIN
|
|
EOSQL
|
|
startup.sh: |-
|
|
#!/bin/sh
|
|
if [ "$HOSTNAME" == "$POSTGRES_PRIMARY_NAME" ]; then
|
|
echo '** Postgres primary **'
|
|
/docker-entrypoint.sh postgres -c config_file=/conf/primary.conf -c hba_file=/conf/pg_hba.conf
|
|
else
|
|
echo '** Postgres standby - initializing replication**'
|
|
if [ -z "$(ls -A ${PGDATA})" ]; then
|
|
pg_basebackup -R -h "$POSTGRES_PRIMARY_FQDN" -D "$PGDATA" -P -U replication
|
|
chown -R postgres:postgres $PGDATA
|
|
fi
|
|
/docker-entrypoint.sh postgres -c config_file=/conf/standby.conf
|
|
fi |