Volume et PostgreSQL

L'objectif de cet exercice est de lancer un conteneur de base de données PostgreSQL qui utilise un volume de données

Question

Lancer un conteneur à partir de l'image postgres:10 et utiliser les volumes docker pour héberger le contenu du dossier /var/lib/postgresql/data

Indice

Vous pouvez créer un volume docker ou partager directement un dossier de l'hôte docker

Solution

Dans l'exemple ci-après, j'ai décidé de partager un volume de mon hôte docker

1
~ docker run --name postgresql -d -v /data/postgresql:/var/lib/postgresql/data postgres:10

Question

Entrez dans le conteneur que vous venez de créer et ajoutez une table nommée test contenant une colonne varchar data de taille 255 et ajoutez-y une entrée de votre choix

Indice

1
docker exec -it postgresql psql -U postgres

Indice

1
create table test(data varchar(255));

Indice

1
insert into ma_table(ma_colonne) values('ma_valeur');

Solution

1
~ docker exec -it postgresql psql -U postgres
2
psql (10.6 (Debian 10.6-1.pgdg90+1))
3
Type "help" for help.
4
5
postgres=# create table test(data varchar(255));
6
CREATE TABLE
7
postgres=# insert into test(data) values('api run');
8
INSERT 0 1
9
postgres=# select * from test;
10
  data
11
---------
12
 api run
13
(1 row)

Question

Détruisez votre conteneur de base de donnée

Solution

1
docker stop postgresql
2
docker rm postgresl

Question

Lancez un nouveau conteneur Docker PosgreSQL réutilisant le précédent volume de données. Vérifiez la présence des données que vous avez créées précédemment.

Solution

Lancement d'un nouveau conteneur

1
~ docker run --name postgresql2 -d -v /data/postgresql:/var/lib/postgresql/data postgres:10

Vérification que la donnée est toujours présente

1
~ docker exec -it postgresql2 psql -U postgres
2
psql (10.6 (Debian 10.6-1.pgdg90+1))
3
Type "help" for help.
4
5
postgres=# select * from test;
6
  data
7
---------
8
 api run
9
(1 row)