Postgres 18 is out. How to run it in containers easy
- Details at – https://github.com/drguptavivek/postgres/tree/main
Basic steps
mkdir postgres
cd postgres
git clone https://github.com/drguptavivek/postgres.git
cd secrets
touch PGADMIN_DEFAULT_EMAIL
nano PGADMIN_DEFAULT_EMAIL
# Type the email ID, save, exit
chmod +x ./scripts/gen_secrets.sh
./scripts/gen_secrets.sh
docker compose -p pgstack -f docker-compose.init.yml up -d
docker logs --tail 50 -f pgdb
chmod +x scripts/02_create_rotate_replication_user.sh
scripts/02_create_rotate_replication_user.sh
docker inspect pgdb | grep IPAddress
grep "replication" config/pg_hba.confCode language: PHP (php)
Backups
sudo mkdir -p backups && sudo chown -R 999:999 backups
./scripts/02_create_rotate_replication_user.sh
docker compose -p pgstack -f docker-compose.backup.yml up -d
# watch for logs
docker logs -f pg_basebackup_runner
docker inspect pgdb | grep IPAddress
docker inspect pg_basebackup_runner | grep IPAddress
grep "replication" config/pg_hba.conf
docker exec -u root pg_basebackup_runner /usr/local/bin/pg_do_basebackup.sh
docker logs --tail 20 -f pgdb
tree backups/full
Code language: PHP (php)
Adding a new App specific Db and its specific db user
chmod +x ./apps/dbtool.sh
# add app name to /scripts/gen_secrets.sh after line 25
# gen fundusApp_PASSWORD4
awk '($0=="# Add_New_Above_Here" && !r){print "gen fundusApp_PASSWORD4"} {print} $0=="# Add_New_Above_Here"{r=1}' ./scripts/gen_secrets.sh > ./scripts/.gen_secrets.sh.tmp && mv ./scripts/.gen_secrets.sh.tmp ./scripts/gen_secrets.sh
chmod +x ./scripts/gen_secrets.sh
./scripts/gen_secrets.sh
# In the app specific docker-compose.fundusApp.yml - services.dbtool.secrets
# >>> App-specific variables <<<
APP_USER: fundusAppUser4 # <-- Change this
APP_DB: fundusAppDb4 # <-- Change this
APP_SCHEMA: fundusAppSchema4 # <-- Change this
APP_PASSWORD:
file: ./secrets/fundusApp_PASSWORD4 # <-- Change this
# Run the one-shot job: use the same project name as your main stack
docker compose -p pgstack \
-f docker-compose.init.yml \
-f docker-compose.fundusApp.yml \
run --rm dbtool
Code language: PHP (php)
Connection String
postgresql://fundusAppUser4:<contents_of_secret_fundusApp_PASSWORD4>@pgdb:5432/fundusAppDb4?search_path=fundusAppSchema4Code language: HTML, XML (xml)