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
~ 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
docker exec -it postgresql psql -U postgres
Indice
create table test(data varchar(255));
Indice
insert into ma_table(ma_colonne) values('ma_valeur');
Solution
~ docker exec -it postgresql psql -U postgres
psql (10.6 (Debian 10.6-1.pgdg90+1))
Type "help" for help.
postgres=# create table test(data varchar(255));
CREATE TABLE
postgres=# insert into test(data) values('api run');
INSERT 0 1
postgres=# select * from test;
data
---------
api run
(1 row)
Question
Détruisez votre conteneur de base de donnée
Solution
docker stop postgresql
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
~ docker run --name postgresql2 -d -v /data/postgresql:/var/lib/postgresql/data postgres:10
Vérification que la donnée est toujours présente
~ docker exec -it postgresql2 psql -U postgres
psql (10.6 (Debian 10.6-1.pgdg90+1))
Type "help" for help.
postgres=# select * from test;
data
---------
api run
(1 row)