Commit 93d3f714 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Passage du nom de la bdd, du user et du password via des variables d'environnement

parent f2a96da3
Loading
Loading
Loading
Loading
Loading
+13 −6
Original line number Diff line number Diff line
@@ -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
```
+5 −1
Original line number Diff line number Diff line
@@ -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
+11 −7
Original line number Diff line number Diff line
@@ -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