Ce didacticiel vous explique comment exécuter PostgreSQL avec un stockage persistant dans un conteneur Docker et vous y connecter.
PostgreSQL est un système de gestion de base de données relationnelle objet open source. Elle existe depuis plus de 30 ans et se présente comme "la base de données relationnelle open source la plus avancée au monde".
Docker est devenu un standard dans l'industrie informatique pour le conditionnement, le déploiement et l'exécution d'applications distribuées en toute simplicité. Les conteneurs Docker vous permettent de créer rapidement de nouvelles applications sans encombrer votre système de dépendances.
Vous pouvez utiliser Docker pour exécuter une base de données PostgreSQL dans un conteneur en tant que serveur distant. Les conteneurs Docker sont basés sur des normes ouvertes, permettant aux conteneurs de s'exécuter sur toutes les principales distributions Linux, macOS et Microsoft Windows.
Exécuter PostgreSQL dans Docker
Nous allons faire ici pour télécharger l'image PostgreSQL, vérifier que l'image est prête, exécuter l'image avec des paramètres spécifiques, et enfin se connecter à l'instance PostgreSQL en cours d'exécution.
1. Extraire une image Docker du serveur PostgreSQL
Tout d'abord, nous devons obtenir une image officielle PostgreSQL existante à partir du Docker Hub. Les images sont disponibles pour les versions 9, 10, 11, 12 et 13 de PostgreSQL. Modifiez le latest
tag à la version requise si vous avez besoin d'une version spécifique.
Extrayons maintenant l'image :
sudo docker pull postgres:latest
L'utilisation de la commande ci-dessus extraira la dernière version disponible de PostgreSQL du référentiel Docker Hub.
2. Exécuter un conteneur à partir de l'image Docker du serveur PostgreSQL
Avant le déploiement, vous devrez configurer un volume Docker ou un montage lié pour conserver votre base de données. Sinon, vos données seront perdues au redémarrage du conteneur. Le montage doit être effectué sur /var/lib/postgresql/data
répertoire dans le conteneur.
Nous allons créer un volume docker pour ce guide et l'attacher à votre conteneur PostgreSQL.
La commande suivante créera le volume sur votre machine locale, que vous pourrez connecter ultérieurement au conteneur PostgreSQL :
sudo docker volume create postgres-volume
Maintenant que vous avez une image PostgreSQL sur votre machine et un volume pour conserver les données, vous pouvez déployer un conteneur avec :
sudo docker run -d --name=postgres13 -p 5432:5432 -v postgres-volume:/var/lib/postgresql/data -e POSTGRES_PASSWORD=[your_password] postgres
La commande docker run créera une base de données PostgreSQL en cours d'exécution dans un conteneur Docker.
Décomposons cette syntaxe. Tout d'abord, voici ce que chaque paramètre de cette commande signifie :
-d
exécutera ce conteneur en mode détaché pour l'exécuter en arrière-plan.--name
attribue le nompostgres13
à votre instance de conteneur.-p
liera le port de conteneur PostgreSQL 5432 au même port sur votre machine hôte. Vous pourrez vous connecter àlocalhost:5432
en utilisant les clients PostgreSQL (psql
) s'exécutant sur votre hôte.-v
option lier ce dossier de données à l'intérieur du volume du conteneur (/var/lib/postgresql
) au volume Docker local (postgres-volume
) que vous avez créé à l'étape précédente.-e
définit une variable d'environnement. Dans ce cas, le mot de passe racine PostgreSQL.postgres
est le nom de l'image que nous utilisons pour créer le conteneur.
Vous pouvez vérifier si le conteneur est en cours d'exécution en répertoriant les conteneurs en cours d'exécution :
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6cb3293fe725 postgres "docker-entrypoint.s…" 19 minutes ago Up 19 minutes 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgres13
Toutes nos félicitations! Votre nouvelle instance PostgreSQL s'exécute maintenant sur Docker.
De plus, vous pouvez vérifier le fichier journal du conteneur PostgreSQL en cours d'exécution avec la commande suivante :
sudo docker logs postgres13
3. Connectez-vous au serveur PostgreSQL
Vous pouvez obtenir un shell PostgreSQL interactif en l'attachant au conteneur et en exécutant le psql
commande. Cela fournit l'interface de ligne de commande complète de PostgreSQL pour utiliser toutes les commandes et tous les drapeaux familiers.
sudo docker exec -it postgres13 psql -U postgres
Vous pouvez également vous connecter à l'instance PostgreSQL Docker en utilisant le psql
Client PostgreSQL si vous l'avez pré-installé sur votre hébergeur.
psql -h localhost -U postgres
Conclusion
L'un des cas d'utilisation les plus importants de l'utilisation de Docker est la facilité de création et d'accès aux applications construites dans des conteneurs sans se soucier des dépendances et des installations.
Dans ce didacticiel, nous avons appris à configurer un serveur PostgreSQL à l'aide de Docker au lieu de la machine hôte réelle.
Avec une architecture de microservices où différents microservices s'appuient sur leurs bases de données, le déploiement de serveurs PostgreSQL en tant que conteneurs Docker est devenu courant.
Il est également largement utilisé pour l'exécution locale ou les tests d'intégration de bout en bout dans un environnement isolé.
Faites-moi savoir si vous avez des questions ou des suggestions, et je me ferai un plaisir de vous répondre.