GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Exécuter PostgreSQL dans Docker, un guide rapide et pratique

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 nom postgres13 à 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.


Docker
  1. Comment exécuter Nginx dans un conteneur Docker :un guide étape par étape

  2. différence entre podman et docker.

  3. Qu'est-ce que Docker (et les conteneurs Linux ?)

  4. Quand et pourquoi utiliser Docker

  5. Guide de mise à niveau vers MongoDB 5.0 et Rocket.Chat 4.0 sur Docker

Guide Docker :Déployer Ghost Blog avec MySQL et Traefik avec Docker

Comment installer et utiliser Docker sur Ubuntu 22.04

Comment nettoyer et supprimer des images Docker

.NET Core et Docker

Création, exécution et test de .NET Core et ASP.NET Core 2.1 dans Docker sur un Raspberry Pi (ARM32)

.NET et Docker