README.md 3.11 KB
Newer Older
1
2
SyGAL Database Image
====================
Bertrand Gauthier's avatar
Bertrand Gauthier committed
3

Bertrand Gauthier's avatar
Bertrand Gauthier committed
4
5
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.
6
7


8
9
Lancement de la base de données
-------------------------------
Bertrand Gauthier's avatar
Bertrand Gauthier committed
10

Bertrand Gauthier's avatar
Bertrand Gauthier committed
11
### Sans `docker-compose`
Bertrand Gauthier's avatar
Bertrand Gauthier committed
12
13
14

```bash
docker run \
Bertrand Gauthier's avatar
Bertrand Gauthier committed
15
--rm \
Bertrand Gauthier's avatar
Bertrand Gauthier committed
16
17
--env POSTGRES_USER=postgres \
--env POSTGRES_PASSWORD=admin \
Bertrand Gauthier's avatar
Bertrand Gauthier committed
18
19
20
--env SYGAL_DB=sygal \
--env SYGAL_USER=ad_sygal \
--env SYGAL_PASSWORD=azerty \
Bertrand Gauthier's avatar
Bertrand Gauthier committed
21
--publish 5432:5432 \
Bertrand Gauthier's avatar
Bertrand Gauthier committed
22
--volume $PWD/docker/sql/:/sql \
Bertrand Gauthier's avatar
Bertrand Gauthier committed
23
24
25
26
27
--volume $PWD/data/db:/var/lib/postgresql/data \
sygal-db-image
```

Remarques :
28
29
30
31
32
33
34
35
36
37
38
39
40
  - 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 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 
      `SYGAL_USER` et `SYGAL_PASSWORD`.
  - 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. 
Bertrand Gauthier's avatar
Bertrand Gauthier committed
41
42

### Avec `docker-compose`
Bertrand Gauthier's avatar
Bertrand Gauthier committed
43

44
45
46
Si vous utilisez `docker-compose`, les variables d'environnement `POSTGRES_*` et `SYGAL_*` 
sont spécifiées "en dur" dans le fichier `docker-compose.yml`.

Bertrand Gauthier's avatar
Bertrand Gauthier committed
47
48
```bash
docker-compose up
Bertrand Gauthier's avatar
Bertrand Gauthier committed
49
```
Bertrand Gauthier's avatar
Bertrand Gauthier committed
50
51


52
53
Utilisation de l'image dans un `docker-compose.yml`
---------------------------------------------------
Bertrand Gauthier's avatar
Bertrand Gauthier committed
54
55

```yml
Bertrand Gauthier's avatar
Bertrand Gauthier committed
56
57
58
59
60
61
62
version: '2.2'
services:
  sygal-db:
    image: sygal-db
    container_name: sygal-db-container
    restart: always
    environment:
63
      POSTGRES_USER: postgres
Bertrand Gauthier's avatar
Bertrand Gauthier committed
64
      POSTGRES_PASSWORD: admin
65
66
67
      SYGAL_DB: sygal
      SYGAL_USER: ad_sygal
      SYGAL_PASSWORD: azerty
Bertrand Gauthier's avatar
Bertrand Gauthier committed
68
    ports:
Bertrand Gauthier's avatar
Bertrand Gauthier committed
69
      - "5432:5432"
Bertrand Gauthier's avatar
Bertrand Gauthier committed
70
    volumes:
Bertrand Gauthier's avatar
Bertrand Gauthier committed
71
72
73
74
75
      - ./mon/emplacement/sql/:/sql                   # répertoire des scripts de création de la bdd
      - ./mon/emplacement/db:/var/lib/postgresql/data # répertoire où la bdd est persistée
```


76
77
Build de l'image
----------------
Bertrand Gauthier's avatar
Bertrand Gauthier committed
78
79
80
81
82

- Facultatif : vous pouvez éventuellement récupérer les dernières versions des scripts SQL comme ceci :

```bash
./update_sql.sh
Bertrand Gauthier's avatar
Bertrand Gauthier committed
83
```
Bertrand Gauthier's avatar
Bertrand Gauthier committed
84
85
86
87
88
89
90
91
92
93
94
95
96
97

NB : Ce script se termine par un git status permettant de connaître les scripts SQL ayant changé.

- Build

```bash
docker build \
--rm \
-t sygal-db-image \
.
```

**Attention !** Si vous êtes derrière un proxy, vous pouvez transmettre les valeurs courantes de vos variables d'environement `*_proxy`
à la commande `build` avec des `--build-arg` additionnels.