Files
composed-services/multidb-pg-pgbouncer/README.md
2025-02-19 19:12:44 +11:00

41 lines
1.4 KiB
Markdown

# Multi Database PostgreSQL with PGBouncer
This Compose project will let you run multiple database within one PostgreSQL container. It's based on (Cristian Angulo)[https://dev.to/nietzscheson/multiples-postgres-databases-in-one-service-with-docker-compose-4fdf]'s post on the subject.
It also starts up a PGBouncer.
## ENV file
Create a .env file with the following keys:
* HOST_IP
* HOST_KIND
* POSTGRES_PASSWORD
### Host IP
I use these with Tailscale - Use this to set the IP for Postgre to bind to.
### Host Kind
In the compose.yaml, you'll see `postgresql.${HOST_KIND}.conf`. This lets you have custom parameters for PostgreSQL per host type. Use https://pgtune.leopard.in.ua to build your own.
* CPX11 is a Hetzner host - 2 vCPUS, 2GB RAM
* Nano is a Linode host - 1 vCPU, 1GB RAM
### POSTGRES_PASSWORD
Used to set the `postgres` user's password
## Data directory
If you're using this for Cache, per SolidCache, you may be happy to use named bind mountings and let Docker manage storage.
Alternatively, bind mount a local directory for PostgreSQL to use.
## Logging
This configuration will log to a mounted volume, using PostgreSQL logging, and not to Stderr / Docker logging as per the default image.
## PGBouncer
Add PGBouncer accounts with:
```bash
./generate-userlist pgb_admin >> userlist.txt
```
Update `pgbouncer.ini` adding the databases defined in POSTGRES_MULTIPLE_DATABASES to the `[databases]` section.