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