Loading .dockerignore +1 −0 Original line number Diff line number Diff line data/ tmp/ DUMP.md 0 → 100644 +38 −0 Original line number Diff line number Diff line Créer/lancer une bdd à partir d'un dump SQL =========================================== - Mettez le fichier de dump SQL dans le répertoire `./tmp/sql` et assurez-vous qu'il a l'extension `.sql`. - Trouvez dans le dump le nom du user attendu : ```bash grep -Ens "OWNER TO" ./tmp/sql/* | head -n 1 ``` - Créez le sous-répertoire `./tmp/sql/admin` et copiez-y le script de création de la bdd : ```bash mkdir -p ./tmp/sql/admin cp ./docker/sql/admin/01_create_db_user.sql ./tmp/sql/admin/ ``` - Lancer le container en adaptant `--env SYGAL_USER=ad_sygal` au user trouvé précédemment : ```bash docker run \ --rm \ --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/tmp/sql/:/sql \ --volume $PWD/tmp/db:/var/lib/postgresql/data \ sygal-db-image ``` Au 1er lancement, si aucune bdd n'est déjà persistée dans le répertoire `./tmp/db`, les scripts SQL sont exécutés : la bdd est créée. Aux lancements suivants, la bdd existe dans le répertoire donc les scripts ne sont pas exécutés. Pour que la bdd soit re-créée, il faut supprimer le répertoire `./tmp/db`. README.md +33 −22 Original line number Diff line number Diff line # SyGAL Database Image SyGAL Database Image ==================== Ce projet est une image Docker rassemblant le nécessaire pour créer (le cas échéant) et de lancer une base de données pour l'application ESUP-SyGAL. ## Lancement de la base de données Lancement de la base de données ------------------------------- ### Avec `docker-compose` Si vous utilisez la commande suivante, le super-utilisateur, le nom de la base de données et de l'utilisateur SyGAL qui seront créés sont spécifiés "en dur" dans le fichier [`docker-compose.yml`](docker-compose.yml) (variables d'environnement `POSTGRES_*` et `SYGAL_*`) : ```bash docker-compose up ``` ### Sans `docker-compose` Loading @@ -23,10 +35,13 @@ sygal-db-image ``` Remarques : - Les variables d'environnement `POSTGRES_*` spécifient le super-utilisateur à créer (cf. https://registry.hub.docker.com/_/postgres). - Les variables d'environnement `SYGAL_*` spécifient la base de données et l'utilisateur SyGAL à créer. - Le montage `$PWD/data/db:/var/lib/postgresql/data` permet de spécifier un répertoire dans lequel sera persistée la base de données. Si aucune base n'est déjà persistée, le script `/initdb.sh` est lancé automatiquement au démarrage du container pour lancer les scripts SQL situés dans le répertoire `/sql` : au démarrage du container pour exécuter les scripts SQL situés dans le répertoire `/sql` : - Pour commencer, ce sont les scripts SQL placés dans le sous-répertoire `admin` qui sont exécutés **avec le super-user identifié par les variables d'environnement `POSTGRES_USER` et `POSTGRES_PASSWORD`**. - Ce sont ensuite les autres scripts qui sont exécutés avec le user identifié par les variables d'environnement Loading @@ -34,14 +49,9 @@ Remarques : - Vous pouvez substituer les scripts SQL par les vôtres en remplaçant le montage dans `/sql` (exemple : `--volume $PWD/mes/scripts/sql/:/sql`). La présence d'un sous-répertoire `admin` n'est pas obligatoire. ### Avec `docker-compose` ```bash docker-compose up ``` ## Utilisation de l'image dans un `docker-compose.yml` Utilisation de l'image dans un `docker-compose.yml` --------------------------------------------------- ```yml version: '2.2' Loading @@ -64,7 +74,8 @@ services: ``` ## Build de l'image Build de l'image ---------------- - Facultatif : vous pouvez éventuellement récupérer les dernières versions des scripts SQL comme ceci : Loading docker-compose.yml +1 −1 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ services: SYGAL_USER: ad_sygal SYGAL_PASSWORD: azerty ports: - 5432:5432 - "5432:5432" volumes: #- ./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 docker/initdb.sh +13 −9 Original line number Diff line number Diff line #!/bin/bash set -e SQL_DIR="/sql" ## ## Lancement des scripts SQL présents dans le répertoire `/sql`. ## Loading @@ -15,11 +17,12 @@ unset PGHOST PGPORT PGDATABASE PGUSER PGPASSWORD # précaution # Exécution EN TANT QUE SUPER-USER de tous les scripts .sql présents dans le répertoire `/sql/admin`. # NB : il est possible de substituer ces scripts par les vôtres grâce à un volume à monter dans `/sql/admin`. # if [ -d "/sql/admin" ]; then cd /sql/admin if [ -d "${SQL_DIR}/admin" ]; then cd ${SQL_DIR}/admin export \ PGDATABASE=$POSTGRES_DB \ PGUSER=$POSTGRES_USER \ PGPASSWORD=$POSTGRES_PASSWORD \ ON_ERROR_STOP=1 for f in *.sql; do psql \ Loading @@ -34,8 +37,9 @@ fi # Exécution de tous les scripts .sql présents dans le répertoire `/sql`. # NB : il est possible de substituer ces scripts par les vôtres grâce à un volume à monter dans `/sql`. # cd /sql cd ${SQL_DIR} export \ ON_ERROR_STOP=1 \ PGDATABASE=$SYGAL_DB \ PGUSER=$SYGAL_USER \ PGPASSWORD=$SYGAL_PASSWORD Loading Loading
DUMP.md 0 → 100644 +38 −0 Original line number Diff line number Diff line Créer/lancer une bdd à partir d'un dump SQL =========================================== - Mettez le fichier de dump SQL dans le répertoire `./tmp/sql` et assurez-vous qu'il a l'extension `.sql`. - Trouvez dans le dump le nom du user attendu : ```bash grep -Ens "OWNER TO" ./tmp/sql/* | head -n 1 ``` - Créez le sous-répertoire `./tmp/sql/admin` et copiez-y le script de création de la bdd : ```bash mkdir -p ./tmp/sql/admin cp ./docker/sql/admin/01_create_db_user.sql ./tmp/sql/admin/ ``` - Lancer le container en adaptant `--env SYGAL_USER=ad_sygal` au user trouvé précédemment : ```bash docker run \ --rm \ --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/tmp/sql/:/sql \ --volume $PWD/tmp/db:/var/lib/postgresql/data \ sygal-db-image ``` Au 1er lancement, si aucune bdd n'est déjà persistée dans le répertoire `./tmp/db`, les scripts SQL sont exécutés : la bdd est créée. Aux lancements suivants, la bdd existe dans le répertoire donc les scripts ne sont pas exécutés. Pour que la bdd soit re-créée, il faut supprimer le répertoire `./tmp/db`.
README.md +33 −22 Original line number Diff line number Diff line # SyGAL Database Image SyGAL Database Image ==================== Ce projet est une image Docker rassemblant le nécessaire pour créer (le cas échéant) et de lancer une base de données pour l'application ESUP-SyGAL. ## Lancement de la base de données Lancement de la base de données ------------------------------- ### Avec `docker-compose` Si vous utilisez la commande suivante, le super-utilisateur, le nom de la base de données et de l'utilisateur SyGAL qui seront créés sont spécifiés "en dur" dans le fichier [`docker-compose.yml`](docker-compose.yml) (variables d'environnement `POSTGRES_*` et `SYGAL_*`) : ```bash docker-compose up ``` ### Sans `docker-compose` Loading @@ -23,10 +35,13 @@ sygal-db-image ``` Remarques : - Les variables d'environnement `POSTGRES_*` spécifient le super-utilisateur à créer (cf. https://registry.hub.docker.com/_/postgres). - Les variables d'environnement `SYGAL_*` spécifient la base de données et l'utilisateur SyGAL à créer. - Le montage `$PWD/data/db:/var/lib/postgresql/data` permet de spécifier un répertoire dans lequel sera persistée la base de données. Si aucune base n'est déjà persistée, le script `/initdb.sh` est lancé automatiquement au démarrage du container pour lancer les scripts SQL situés dans le répertoire `/sql` : au démarrage du container pour exécuter les scripts SQL situés dans le répertoire `/sql` : - Pour commencer, ce sont les scripts SQL placés dans le sous-répertoire `admin` qui sont exécutés **avec le super-user identifié par les variables d'environnement `POSTGRES_USER` et `POSTGRES_PASSWORD`**. - Ce sont ensuite les autres scripts qui sont exécutés avec le user identifié par les variables d'environnement Loading @@ -34,14 +49,9 @@ Remarques : - Vous pouvez substituer les scripts SQL par les vôtres en remplaçant le montage dans `/sql` (exemple : `--volume $PWD/mes/scripts/sql/:/sql`). La présence d'un sous-répertoire `admin` n'est pas obligatoire. ### Avec `docker-compose` ```bash docker-compose up ``` ## Utilisation de l'image dans un `docker-compose.yml` Utilisation de l'image dans un `docker-compose.yml` --------------------------------------------------- ```yml version: '2.2' Loading @@ -64,7 +74,8 @@ services: ``` ## Build de l'image Build de l'image ---------------- - Facultatif : vous pouvez éventuellement récupérer les dernières versions des scripts SQL comme ceci : Loading
docker-compose.yml +1 −1 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ services: SYGAL_USER: ad_sygal SYGAL_PASSWORD: azerty ports: - 5432:5432 - "5432:5432" volumes: #- ./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
docker/initdb.sh +13 −9 Original line number Diff line number Diff line #!/bin/bash set -e SQL_DIR="/sql" ## ## Lancement des scripts SQL présents dans le répertoire `/sql`. ## Loading @@ -15,11 +17,12 @@ unset PGHOST PGPORT PGDATABASE PGUSER PGPASSWORD # précaution # Exécution EN TANT QUE SUPER-USER de tous les scripts .sql présents dans le répertoire `/sql/admin`. # NB : il est possible de substituer ces scripts par les vôtres grâce à un volume à monter dans `/sql/admin`. # if [ -d "/sql/admin" ]; then cd /sql/admin if [ -d "${SQL_DIR}/admin" ]; then cd ${SQL_DIR}/admin export \ PGDATABASE=$POSTGRES_DB \ PGUSER=$POSTGRES_USER \ PGPASSWORD=$POSTGRES_PASSWORD \ ON_ERROR_STOP=1 for f in *.sql; do psql \ Loading @@ -34,8 +37,9 @@ fi # Exécution de tous les scripts .sql présents dans le répertoire `/sql`. # NB : il est possible de substituer ces scripts par les vôtres grâce à un volume à monter dans `/sql`. # cd /sql cd ${SQL_DIR} export \ ON_ERROR_STOP=1 \ PGDATABASE=$SYGAL_DB \ PGUSER=$SYGAL_USER \ PGPASSWORD=$SYGAL_PASSWORD Loading