Configurez un serveur PostgreSQL et PGADMIN avec Docker

Configurez un serveur PostgreSQL et PGADMIN avec Docker
Dans cet article, je vais vous montrer comment utiliser Docker Compose pour créer un conteneur postgresql et y accéder à l'aide de Pgadmin 4, l'interface d'administration PostgreSQL basée sur le Web. Je vais également vous montrer comment accéder au serveur de base de données PostgreSQL en cours d'exécution dans un conteneur Docker à partir de Datagrip IDE. Alors, commençons.

Exigences:

Afin de suivre cet article, vous devez faire installer Docker sur votre ordinateur. Linuxhint a beaucoup d'articles que vous pouvez suivre pour installer Docker sur la distribution Linux souhaitée si vous ne l'avez pas déjà installé. Alors, assurez-vous de vérifier Linuxhint.com au cas où vous auriez du mal à installer Docker.

Installation de Docker Compose:

Vous pouvez télécharger très facilement Docker Compose Binary File avec la commande suivante:

$ sudo curl -l "https: // github.com / docker / compose / releases / download / 1.24.1/
docker-compose - $ (uname -s) - $ (uname -m) "-o / usr / local / bin / docker-compose

NOTE: boucle ne peut pas être installé sur votre distribution Linux. Si tel est le cas, vous pouvez installer Curl avec la commande suivante:

Ubuntu / Debian / Linux Mint:

$ sudo apt install curl -y

Centos / Rhel / Fedora:

$ sudo dnf installer curl -y

Une fois composer docker Le fichier binaire est téléchargé, exécutez la commande suivante:

$ sudo chmod + x / usr / local / bin / docker-compose

Maintenant, vérifiez si composer docker La commande fonctionne comme suit:

$ docker-compose version

Il devrait imprimer les informations de version comme indiqué dans la capture d'écran ci-dessous.

Configuration de Docker Compose pour le projet:

Maintenant, créez un répertoire de projet (disons ~ / docker / pgdev) comme suit:

$ mkdir -p ~ / docker / pgdev

Maintenant, accédez au répertoire du projet ~ / docker / pgdev comme suit:

$ cd ~ / docker / pgdev

Maintenant, créez un composer docker.yaml fichier dans le répertoire de projet ~ / docker / pgdev et tapez dans les lignes suivantes dans le composer docker.yaml déposer.

Version: "3.7"
prestations de service:
DB:
Image: Postgres: 12.2
redémarrer: toujours
environnement:
Postgres_db: Postgres
Postgres_user: admin
Postgres_password: secret
Pgdata: / var / lib / postgresql / data
Volumes:
- db-data: / var / lib / postgresql / data
PORTS:
- "5432: 5432"
Pgadmin:
Image: dpage / pgadmin4: 4.18
redémarrer: toujours
environnement:
Pgadmin_default_email: admin @ linuxhint.com
Pgadmin_default_password: secret
PGADMIN_LISTEN_PORT: 80
PORTS:
- "8080: 80"
Volumes:
- pgadmin-data: / var / lib / pgadmin
liens:
- "DB: pgsql-server"
Volumes:
DB-Data:
pgadmin-data:

Le composer docker.yaml Le fichier doit ressembler à ce qui suit.

Ici, j'ai créé 2 services db et pgadmin.

db Le service exécutera le Postgres: 12.2 image (de dockerhub) dans un conteneur docker.

pgadmin Le service exécutera le DPAGE / PGADMIN4: 4.18 image (de dockerhub) dans un autre conteneur docker.

Dans db service, le Postgres_db, Postgres_user, Postgres_password Les variables d'environnement sont utilisées pour définir le nom de base de données par défaut, le nom d'utilisateur d'administration et le mot de passe de l'utilisateur de l'administrateur pour le serveur PostgreSQL respectivement. Le Pgdata La variable d'environnement est utilisée pour configurer le serveur PostgreSQL pour stocker les données à / var / lib / postgresql / data répertoire du conteneur.

Dans pgadmin service, le Pgadmin_default_email, Pgadmin_default_password Les variables d'environnement sont utilisées pour définir les e-mails de connexion et le mot de passe de l'interface Web PGADMIN respectivement. Le PGADMIN_LISTEN_PORT est utilisé pour définir le port pgadmin 80 dans le conteneur.

En service db, tout le contenu du / var / lib / postgresql / data Le répertoire sera enregistré en permanence dans le data db volume.

Dans le pgadmin service, tout le contenu du / var / lib / pgadmin Le répertoire sera enregistré en permanence dans le pgadmin-data volume.

Dans le db Service, le port de conteneur 5432 (à droite) est mappé au port d'hôte Docker 5432 (gauche).

Dans le pgadmin Service, le port de conteneur 80 (à droite) est mappé au port d'hôte Docker 8080 (gauche).

Dans le pgadmin Service, un alias de nom d'hôte pgsql-serveur au db Le conteneur est créé. Ainsi, vous pouvez accéder au serveur PostgreSQL en utilisant pgsql-serveur Comme le nom d'hôte (aucune adresse IP requise).

Démarrage du serveur postgresql et pgadmin:

Maintenant, pour démarrer le db et pgadmin services, exécutez la commande suivante:

$ docker-compose up -d

Les services doivent commencer en arrière-plan.

Comme vous pouvez le voir, le port 8080 et 5432 sont ouverts par le docker-proxy service.

$ sudo netstat -tlpn

Pour voir comment les ports sont mappés, exécutez la commande suivante:

$ docker-compose ps

Comme vous pouvez le voir, pour le db Service, le port hôte docker 5432 est mappé au port TCP à conteneur 5432.

Pour le pgadmin Service, le port hôte docker 8080 est mappé au port TCP à conteneur 80.

Accès au serveur PGADMIN 4 ou PostgreSQL à partir d'autres ordinateurs:

Si vous souhaitez accéder à PGADMIN 4 ou au serveur de base de données PostgreSQL à partir d'un autre ordinateur de votre réseau, vous devez connaître l'adresse IP de votre hôte Docker.

Pour trouver l'adresse IP de votre hôte Docker, exécutez la commande suivante:

$ ip

Dans mon cas, l'adresse IP de mon hôte docker 192.168.20.160. Ce sera différent pour vous. Alors, assurez-vous de le remplacer par le vôtre à partir de maintenant.

Accès à Pgadmin depuis le navigateur Web:

Maintenant, vous pouvez facilement accéder à Pgadmin 4 depuis votre navigateur Web.

Visitez http: // localhost: 8080 de votre hôte docker ou http: // 192.168.20.160: 8080 de n'importe quel ordinateur de votre réseau. Vous devriez voir la page de connexion PGADMIN. Connectez-vous avec votre e-mail et votre mot de passe.

Une fois que vous vous connectez, vous devriez voir le tableau de bord Pgadmin.

Maintenant, pour ajouter le serveur PostgreSQL en cours d'exécution en tant que conteneur Docker, cliquez avec le bouton droit sur Les serveurs, Et puis allez à Créer > Serveur…

Dans le Général onglet, saisissez votre serveur Nom.

Maintenant, allez au Connexion onglet et tapez pgsql-serveur comme Nom / adresse d'hôte, 5432 comme Port, postgres comme Base de données de maintenance, administrer comme Nom d'utilisateur, secret comme Mot de passe et vérifie Enregistrer le mot de passe? cocher. Ensuite, cliquez sur Sauvegarder.

Pgadmin 4 doit être connecté à votre base de données PostgreSQL. Maintenant, vous pouvez travailler avec votre base de données PostgreSQL autant que vous le souhaitez.

Accéder à PostgreSQL depuis DataGrip:

Vous pouvez également accéder à votre serveur de base de données PostgreSQL à partir de Datagrip IDE ou de tout autre IDE SQL.

En cas de datagrip, cliquez sur + du Bases de données section et aller à La source de données > Postgresql.

Le pilote PostgreSQL peut ne pas être installé. Dans ce cas, cliquez sur Télécharger.

Le conducteur doit être installé. Maintenant, saisissez l'adresse IP de l'hôte Docker 192.168.20.160 (dans mon cas) comme le Héberger, 5432 comme le Port, administrer comme le Utilisateur, secret comme le Mot de passe, postgres comme le Base de données et cliquez sur Test de connexion.

Vous devriez voir les détails du serveur de base de données PostgreSQL si tout fonctionne.

Maintenant, cliquez sur D'ACCORD.

Maintenant, vous pouvez gérer vos bases de données PostgreSQL à partir de Datagrip.

Arrêt de Postgresql et Pgadmin:

Maintenant, pour arrêter le db et pgadmin services, exécutez la commande suivante:

$ docker-compose

Le db et pgadmin Les services doivent être arrêtés.

Nettoyage des données postgresql et pgadmin:

Si vous souhaitez supprimer toutes les données et paramètres de la base de données PostgreSQL, et tous les paramètres PGADMIN, vous devez supprimer le data db et pgadmin-data volumes.

Vous pouvez trouver le nom réel des volumes de données avec la commande suivante:

$ volume docker ls

Comme vous pouvez le voir, il y a 2 volumes pour le pgdev projet, pgdev_db-data et pgdev_pgadmin-data.

Vous pouvez supprimer ces volumes avec la commande suivante:

$ docker volume rm pgdev_db-data pgdev_pgadmin-data

Les références:

[1] https: // hub.docker.com / _ / Postgres?Tab = Description
[2] https: // hub.docker.com / r / dpage / pgadmin4 /
[3] https: // www.pgadmin.org / docs / pgadmin4 / dernier / contener_deployment.html