From eed4e6f85586c4e2f1712f8714cb26ce04241897 Mon Sep 17 00:00:00 2001 From: Pierre Tellier Date: Tue, 11 Feb 2025 11:07:45 +0100 Subject: [PATCH] feat: multiple database and user in postgres --- .gitignore | 1 + config/backdev.docker-compose.yaml | 13 ++++++------- config/backdev.main.env | 16 ++++++++++------ config/frontdev.docker-compose.yaml | 12 ++++++------ config/frontdev.main.env | 16 ++++++++++++---- config/prod.docker-compose.yaml | 7 +++++-- config/prod.main.env | 16 ++++++++++++---- postgres/Dockerfile | 5 +++++ postgres/create_db.sh | 17 +++++++++++++++++ postgres/create_user.sh | 16 ++++++++++++++++ 10 files changed, 90 insertions(+), 29 deletions(-) create mode 100644 postgres/Dockerfile create mode 100644 postgres/create_db.sh create mode 100644 postgres/create_user.sh diff --git a/.gitignore b/.gitignore index 170ba0d..7117a86 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ .idea keycloak/CAS/target docker-compose.yaml +postgres/data \ No newline at end of file diff --git a/config/backdev.docker-compose.yaml b/config/backdev.docker-compose.yaml index 607fa49..25151a0 100644 --- a/config/backdev.docker-compose.yaml +++ b/config/backdev.docker-compose.yaml @@ -1,15 +1,14 @@ services: postgres: - image: postgres:latest + env_file: .env + build: + context: postgres/ + dockerfile: Dockerfile container_name: MyINPulse-DB ports: - - 5432:5432 + - 5433:5432 volumes: - - ./postgres:/var/lib/postgresql/data - environment: - POSTGRES_DB: ${POSTGRES_DB} - POSTGRES_USER: ${POSTGRES_USER} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + - ./postgres/data:/var/lib/postgresql/data keycloak: container_name: MyINPulse-keycloak diff --git a/config/backdev.main.env b/config/backdev.main.env index 6ddb261..2a597c3 100644 --- a/config/backdev.main.env +++ b/config/backdev.main.env @@ -1,10 +1,14 @@ -POSTGRES_DB=keycloak_db -POSTGRES_USER=keycloak_db_user -POSTGRES_PASSWORD=keycloak_db_user_password +POSTGRES_DB=postgres_db +POSTGRES_USER=postgres +POSTGRES_PASSWORD=postgres_db_user_password + KEYCLOAK_ADMIN=admin KEYCLOAK_ADMIN_PASSWORD=admin KEYCLOAK_HOSTNAME=localhost +KEYCLOAK_DB=keycloak_db +KEYCLOAK_USER=keycloak_db_user +KEYCLOAK_PASSWORD=keycloak_db_user_password -MYINPULSE_DB=MyINPulse_db -MYINPULSE_DB_USER=MyINPulse_db_user -MYINPULSE_DB_PASS=MyINPulse_db_user_pass \ No newline at end of file +BACKEND_DB=backend_db +BACKEND_USER=backend_db_user +BACKEND_PASSWORD=backend_db_user_password \ No newline at end of file diff --git a/config/frontdev.docker-compose.yaml b/config/frontdev.docker-compose.yaml index aa6d0d0..529ac2c 100644 --- a/config/frontdev.docker-compose.yaml +++ b/config/frontdev.docker-compose.yaml @@ -1,15 +1,15 @@ services: postgres: - image: postgres:latest + env_file: .env + build: + context: postgres/ + dockerfile: Dockerfile container_name: MyINPulse-DB #ports: # - 5432:5432 volumes: - - ./postgres:/var/lib/postgresql/data - environment: - POSTGRES_DB: ${POSTGRES_DB} - POSTGRES_USER: ${POSTGRES_USER} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + - ./postgres/data:/var/lib/postgresql/data + keycloak: container_name: MyINPulse-keycloak diff --git a/config/frontdev.main.env b/config/frontdev.main.env index 6f32124..26c2803 100644 --- a/config/frontdev.main.env +++ b/config/frontdev.main.env @@ -1,6 +1,14 @@ -POSTGRES_DB=keycloak_db -POSTGRES_USER=keycloak_db_user -POSTGRES_PASSWORD=keycloak_db_user_password +POSTGRES_DB=postgres_db +POSTGRES_USER=postgres +POSTGRES_PASSWORD=postgres_db_user_password + KEYCLOAK_ADMIN=admin KEYCLOAK_ADMIN_PASSWORD=admin -KEYCLOAK_HOSTNAME=localhost \ No newline at end of file +KEYCLOAK_HOSTNAME=localhost +KEYCLOAK_DB=keycloak_db +KEYCLOAK_USER=keycloak_db_user +KEYCLOAK_PASSWORD=keycloak_db_user_password + +BACKEND_DB=backend_db +BACKEND_USER=backend_db_user +BACKEND_PASSWORD=backend_db_user_password diff --git a/config/prod.docker-compose.yaml b/config/prod.docker-compose.yaml index fe2a3d7..51f2d76 100644 --- a/config/prod.docker-compose.yaml +++ b/config/prod.docker-compose.yaml @@ -1,11 +1,14 @@ services: postgres: - image: postgres:latest + env_file: .env + build: + context: postgres/ + dockerfile: Dockerfile container_name: MyINPulse-DB #ports: # - 5432:5432 volumes: - - ./postgres:/var/lib/postgresql/data + - ./postgres/data:/var/lib/postgresql/data environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} diff --git a/config/prod.main.env b/config/prod.main.env index e8db94b..179d92c 100644 --- a/config/prod.main.env +++ b/config/prod.main.env @@ -1,6 +1,14 @@ -POSTGRES_DB=keycloak_db -POSTGRES_USER=keycloak_db_user -POSTGRES_PASSWORD=keycloak_db_user_password +POSTGRES_DB=postgres_db +POSTGRES_USER=postgres +POSTGRES_PASSWORD=postgres_db_user_password + KEYCLOAK_ADMIN=admin KEYCLOAK_ADMIN_PASSWORD=admin -KEYCLOAK_HOSTNAME=0549cd63f912d5dc9b31278d6f.eirb.fr \ No newline at end of file +KEYCLOAK_HOSTNAME=0549cd63f912d5dc9b31278d6f.eirb.fr +KEYCLOAK_DB=keycloak_db +KEYCLOAK_USER=keycloak_db_user +KEYCLOAK_PASSWORD=keycloak_db_user_password + +BACKEND_DB=backend_db +BACKEND_USER=backend_db_user +BACKEND_PASSWORD=backend_db_user_password diff --git a/postgres/Dockerfile b/postgres/Dockerfile new file mode 100644 index 0000000..da99686 --- /dev/null +++ b/postgres/Dockerfile @@ -0,0 +1,5 @@ +FROM postgres:latest + +# Custom initialization scripts +COPY ./create_user.sh /docker-entrypoint-initdb.d/10-create_user.sh +COPY ./create_db.sh /docker-entrypoint-initdb.d/20-create_db.sh diff --git a/postgres/create_db.sh b/postgres/create_db.sh new file mode 100644 index 0000000..c1728a0 --- /dev/null +++ b/postgres/create_db.sh @@ -0,0 +1,17 @@ +#!/bin/bash +set -e + +POSTGRES="psql --username ${POSTGRES_USER}" + +echo "Creating database: ${DB_NAME}" + +$POSTGRES <