Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
open-source
docker
sygal-db-image
Commits
f2a96da3
Commit
f2a96da3
authored
Apr 15, 2021
by
Bertrand Gauthier
Browse files
Amélioration de la subsituabilité des scripts SQL de création/peuplement des objets de la bdd
parent
fc53f1d1
Pipeline
#9573
passed with stage
in 3 seconds
Changes
5
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
.dockerignore
0 → 100644
View file @
f2a96da3
data/
Dockerfile
View file @
f2a96da3
...
...
@@ -10,8 +10,11 @@ RUN localedef -i fr_FR -c -f UTF-8 -A /usr/share/locale/locale.alias fr_FR.UTF-8
ENV
LANG fr_FR.utf8
# Script d'initialisation de la bdd, lancé automatiquement (ssi le répertoire `data/db` est vide).
# Copie du script de création de la base 'sygal' et du user 'ad_sygal'
# (lancé automatiquement ssi le répertoire de persistance de la base de données est vide).
COPY
docker/init_user_db.sh /docker-entrypoint-initdb.d/
# Copie des scripts SQL de création de la bdd, lancés par le script `init_user_db.sh`.
# Copie des scripts SQL de création des objets de la base de données 'sygal'
# (le script `init_user_db.sh` lancera tous les scripts .sql présents dans `/sql`).
# NB : il est possible de substituer ces scripts par les vôtres grâce à un volume.
COPY
docker/sql/*.sql /sql/
README.md
View file @
f2a96da3
# Sygal Db Image
## Construction de l'image (build)
## 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`
,
-
lancer tous les scripts .sql présents dans le répertoire
`/sql`
de l'image.
## Répertoire `docker/sql` =>
Construisez l'image pour la version de PHP désirée...
Il contient les scripts SQL ordonnés pour la création et le peuplement des objets de la base de données 'sygal',
lancés par le script
`docker/init_user_db.sh`
.
Si vous voulez substituer ces scripts SQL par les vôtres, vous pouvez spécifier un montage du genre
`--volume $PWD/mes/scripts/sql/:/sql`
au lancement du container.
## Construction de l'image (build)
```
bash
docker build
\
...
...
@@ -33,15 +46,14 @@ docker run \
--env
POSTGRES_PASSWORD
=
admin
\
--publish
5432:5432
\
--volume
$PWD
/data/db:/var/lib/postgresql/data
\
--volume
$PWD
/docker/db/sql/:/sql
\
--name
sygal-db-container
\
sygal-db-image
```
Remarques :
-
Le montage
`./data/db:/var/lib/postgresql/data`
permet de persister la base de données.
-
Le montage
`./docker/db/sql/:/sql`
vous per
met de
remplacer les scripts SQL
de création/peuplement des objets de la base de données par les vôtres le cas échéant
.
-
Si vous voulez substituer les scripts SQL de création/peuple
me
n
t de
s objets de la base de données par les vôtres,
ajoutez un montage du genre
`--volume $PWD/mes/scripts/sql/:/sql`
.
## Utilisation dans un `docker-compose.yml`
...
...
@@ -53,6 +65,7 @@ services:
container_name: sygal-db-container
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: admin
ports:
- 5432:5432
...
...
docker/init_user_db.sh
View file @
f2a96da3
#!/bin/bash
set
-e
cd
/sql
# volume
unset
PGHOST PGPORT PGDATABASE PGUSER PGPASSWORD
# précaution
#
# Création de la base 'sygal' et du user 'ad_sygal'.
#
export
\
PGDATABASE
=
$POSTGRES_DB
\
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;
EOF
psql
-f
01_create_db_user.sql
psql
-c
"alter user ad_sygal with encrypted password 'azerty'"
#
# Création d'objets divers dans la base 'sygal'.
# 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
psql
-f
02_create_schema.sql
psql
-f
03_insert_bootstrap_data.sql
psql
-f
04_insert_data.sql
psql
-f
05_create_constraints.sql
psql
-f
06_create_comue.sql
psql
-f
07_init.sql
psql
-f
08_create_fixture.sql
psql
<<
EOF
CREATE EXTENSION unaccent WITH SCHEMA public;
COMMENT ON EXTENSION unaccent IS 'text search dictionary that removes accents';
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`.
#
cd
/sql
for
f
in
*
.sql
;
do
psql
-f
$f
done
unset
PGHOST PGPORT PGDATABASE PGUSER PGPASSWORD
# précaution
docker/sql/01_create_db_user.sql
deleted
100644 → 0
View file @
fc53f1d1
--
-- DATABASE, USER, ETC.
--
-- Databases
create
database
sygal
with
ENCODING
=
'UTF-8'
;
-- Users
create
user
ad_sygal
with
encrypted
password
'MOT_DE_PASSE_PAR_DEFAUT'
NOSUPERUSER
NOCREATEDB
;
-- Grants
grant
all
privileges
on
database
sygal
to
ad_sygal
;
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment