From 93d3f7143ab811efe335acd21a2255af8e28ce37 Mon Sep 17 00:00:00 2001
From: Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
Date: Mon, 5 Jul 2021 15:47:11 +0200
Subject: [PATCH] Passage du nom de la bdd, du user et du password via des
 variables d'environnement

---
 README.md              | 19 +++++++++++++------
 docker-compose.yml     |  6 +++++-
 docker/init_user_db.sh | 18 +++++++++++-------
 3 files changed, 29 insertions(+), 14 deletions(-)

diff --git a/README.md b/README.md
index 549e46f..0d5b9f4 100644
--- a/README.md
+++ b/README.md
@@ -2,9 +2,10 @@
 
 ## Script `docker/init_user_db.sh`
 
-Ce script est monté pour être lancé automatiquement au démarrage du container pour...
-- créer une base de données `sygal`,
-- créer le user `ad_sygal`,
+Ce script est lancé automatiquement au démarrage du container pour...
+- créer une base de données dont le nom est fourni par la variable d'environnement `SYGAL_DB` ;
+- créer un user dont le nom est fourni par la variable d'environnement `SYGAL_USER`, 
+  et le mot de passe par la variable `SYGAL_PASSWORD` ;
 - lancer tous les scripts .sql présents dans le répertoire `/sql` de l'image.
 
 ## Répertoire `docker/sql` => 
@@ -44,6 +45,9 @@ Exemple :
 docker run \
 --env POSTGRES_USER=postgres \
 --env POSTGRES_PASSWORD=admin \
+--env SYGAL_DB: sygal \
+--env SYGAL_USER: ad_sygal \
+--env SYGAL_PASSWORD: azerty \
 --publish 5432:5432 \
 --volume $PWD/data/db:/var/lib/postgresql/data \
 --name sygal-db-container \
@@ -51,7 +55,7 @@ sygal-db-image
 ```
 
 Remarques :
-- Le montage `./data/db:/var/lib/postgresql/data` permet de persister la base de données.
+- Le montage `$PWD/data/db:/var/lib/postgresql/data` permet de persister la base de données.
 - Si vous voulez substituer les scripts SQL de création/peuplement des objets de la base de données par les vôtres, 
   ajoutez un montage du genre `--volume $PWD/mes/scripts/sql/:/sql`.
   
@@ -67,9 +71,12 @@ services:
     environment:
       POSTGRES_USER: postgres
       POSTGRES_PASSWORD: admin
+      SYGAL_DB: sygal
+      SYGAL_USER: ad_sygal
+      SYGAL_PASSWORD: azerty
     ports:
       - 5432:5432
     volumes:
-      - ./data/db:/var/lib/postgresql/data
-      - ./docker/db/sql/:/sql
+      - ./docker/db/sql/:/sql               # répertoire des scripts de création de la bdd
+      - ./data/db:/var/lib/postgresql/data  # répertoire de où la bdd est persistée
 ```
diff --git a/docker-compose.yml b/docker-compose.yml
index 927ee85..716463a 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -10,7 +10,11 @@ services:
       #POSTGRES_DB: postgres
       POSTGRES_USER: postgres
       POSTGRES_PASSWORD: admin
+      SYGAL_DB: sygal
+      SYGAL_USER: ad_sygal
+      SYGAL_PASSWORD: azerty
     ports:
       - 5432:5432
     volumes:
-      - ./data/db:/var/lib/postgresql/data
+      #- ./docker/db/sql/:/sql               # répertoire des scripts de création de la bdd
+      - ./data/db:/var/lib/postgresql/data  # répertoire de où la bdd est persistée
diff --git a/docker/init_user_db.sh b/docker/init_user_db.sh
index 8de21e5..eaf9874 100755
--- a/docker/init_user_db.sh
+++ b/docker/init_user_db.sh
@@ -3,6 +3,10 @@ set -e
 
 unset PGHOST PGPORT PGDATABASE PGUSER PGPASSWORD # précaution
 
+#echo "SYGAL_DB = $SYGAL_DB"
+#echo "SYGAL_USER = $SYGAL_USER"
+#echo "SYGAL_PASSWORD = $SYGAL_PASSWORD"
+
 #
 # Création de la base 'sygal' et du user 'ad_sygal'.
 #
@@ -11,9 +15,9 @@ export \
   PGUSER=$POSTGRES_USER \
   ON_ERROR_STOP=1
 psql <<EOF
-create database sygal with ENCODING = 'UTF-8';
-create user ad_sygal with encrypted password 'azerty' NOSUPERUSER NOCREATEDB;
-grant all privileges on database sygal to ad_sygal;
+create database $SYGAL_DB with ENCODING = 'UTF-8';
+create user $SYGAL_USER with encrypted password '$SYGAL_PASSWORD' NOSUPERUSER NOCREATEDB;
+grant all privileges on database $SYGAL_DB to $SYGAL_USER;
 EOF
 
 #
@@ -21,9 +25,9 @@ EOF
 # NB : il est possible de substituer ces scripts par les vôtres grâce à un volume monter dans `/sql`.
 #
 export \
-  PGDATABASE=sygal \
-  PGUSER=ad_sygal \
-  PGPASSWORD=azerty
+  PGDATABASE=$SYGAL_DB \
+  PGUSER=$SYGAL_USER \
+  PGPASSWORD=$SYGAL_PASSWORD
 psql <<EOF
 CREATE EXTENSION unaccent WITH SCHEMA public;
 COMMENT ON EXTENSION unaccent IS 'text search dictionary that removes accents';
@@ -31,7 +35,7 @@ EOF
 #
 # Exécution de tous les scripts .sql présents dans le répertoire `/sql`
 # pour créer/peupler les objets de la base 'sygal'.
-# NB : il est possible de substituer ces scripts par les vôtres grâce à un volume monter dans `/sql`.
+# NB : il est possible de substituer ces scripts par les vôtres grâce à un volume à monter dans `/sql`.
 #
 cd /sql
 for f in *.sql; do
-- 
GitLab