This commit is contained in:
Dan Milne
2025-02-19 19:44:12 +11:00
parent 378edd8f8b
commit b7b81247e9

View File

@@ -1,8 +1,10 @@
# Multi Database PostgreSQL with PGBouncer # 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. 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.
The original version creates users per database, with the same name as teh database. This version sets the password for the users created to that of the postgres user. The `multiple-databases.sh` script does the heavy lifting, creating the databases and the associated users.
The original version creates users per database, with the same name as the database. This version sets the password for the users created to that of the postgres user.
It also starts up a PGBouncer. It also starts up a PGBouncer.
@@ -14,7 +16,7 @@ Create a .env file with the following keys:
* POSTGRES_PASSWORD * POSTGRES_PASSWORD
### Host IP ### Host IP
I use these with Tailscale - Use this to set the IP for Postgre to bind to. Use this to set the IP for Postgres to bind to.
### Host Kind ### 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. 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.
@@ -29,7 +31,7 @@ Used to set the `postgres` user's password
Set the `POSTGRES_MULTIPLE_DATABASES` value in `compose.yaml` to a series of comma separated database names. Set the `POSTGRES_MULTIPLE_DATABASES` value in `compose.yaml` to a series of comma separated database names.
## Data directory ## 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. If you're using this for cache, say [SolidCache](https://github.com/rails/solid_cache), you may be happy to use named bind mountings and let Docker manage storage.
Alternatively, bind mount a local directory for PostgreSQL to use. Alternatively, bind mount a local directory for PostgreSQL to use.