Installer PostgreSQL et pgAdmin avec Docker sur Windows
Bonjour à tous,
Aujourd’hui, je vais vous présenter comment installer PostgreSQL et pgAdmin, en utilisant Docker, un outil de virtualisation permettant de déployer des applications très facilement.
Docker est un outil de conteneurisation d’applications. Le principe de containeur se rapproche des technologies de virtualisations de machines, mais est beaucoup plus pratique car c’est uniquement l’application qui sera virtualisée. Tous les containeurs se partageront donc le même noyau du système d’exploitation et isolent les processus de l’application du reste du système. Cette technique est beaucoup plus légère en terme de consommation de ressources systèmes.
Il est également totalement possible d’exécuter des systèmes Linux dans un containeur et de récupérer une interface graphique depuis un VNC (Virtual Network Computing). Nous n’aborderons pas ce sujet dans ce tutoriel.
Maintenant que nous avons fait un point sur Docker, nous pouvons commencer à l’installer, le configurer et pour finir déployer les différents services que nous voudrons. J’utiliserai Windows afin de réaliser l’installation des différents systèmes, mais les étapes restent les mêmes. (A l’exception de l’installation de Docker)
Avant tout, vous devez vérifier que la virtualisation est activée dans votre BIOS. Ce tutoriel détaillé vous expliquera comment réaliser cette manipulation. Si vous avez déjà réalisé la manipulation pour l’utilisation de machines virtuelles, vous n’avez pas besoin de la réaliser une nouvelle fois.
Si vous possédez une version non professionnelle de Windows, vous aurez besoin d’installer le support WSL 2 (Windows SubSystem for Linux). Tapez fonctionnalités et cliquez sur “Activer ou désactiver des fonctionnalités Windows”.
Ensuite, descendez le menu de sélection et cliquez sur Sous-système Windows pour Linux.
Patientez puis cliquez sur le bouton Redémarrer maintenant pour finaliser l’installation de WSL.
Pour installer Docker sur Windows, vous devez téléchargez l’outil au lien suivant (https://hub.docker.com/editions/community/docker-ce-desktop-windows/) et cliquez sur le bouton de téléchargement “Get Docker” en bleu.
Une fois téléchargé, lancez l’outil d’installation. Vous apparaitrez sur un menu de sélection comme celui-ci. Cochez tout et cliquez sur “OK”.
Patientez, l’installation prend quelques minutes à se finaliser. Une fois finalisée, cliquez sur “Close”. Lancez Docker Desktop depuis votre bureau ou le menu des programmes Windows. Durant ce lancement, Docker lance un “daemon” sur votre système qui gérera toutes les instructions données par le client Docker.
Une fois lancé, l’icone de Docker s’affichera dans la barre des applications à droite de celle-ci en cliquant sur la flèche. Faites un double-clic sur l’icône et l’application s’ouvrira. Vous pouvez effectuer le tutoriel si vous le souhaitez afin de vous familiariser avec Docker.
Maintenant nous allons procéder au déploiement des différents services Docker. Nous déploierons PostgreSQL, qui est un Système de Gestion de base de données, ainsi que pgAdmin, qui est une interface graphique Web permettant une utilisation plus simplifiée de PostgreSQL.
Mettez-vous dans un dossier vide, et créez un fichier docker-compose.yml en vérifiant bien que l’extension est .yml et non .txt . Ouvrez-le dans un logiciel de traitement de texte (NotePad++ par exemple) et copiez le contenu ci-dessus.
version: '3.5' # La version de DockerCompose que nous souhaitons utiliser# ${POSTGRES_USER:-postgres}
# Par exemple, si la variable POSTGRES_USER est défini par le système, elle sera utilisée
# Sinon, la variable par défaut qui se trouve après les caractères :- sera utilisée. (postgres dans ce cas)services: # Ici, nous retrouvons les services que nous souhaitons déployer
postgres: # Le nom du service
container_name: postgres_container # Le nom du containeur
image: postgres # Le nom de l'image Docker pour PostgreSQL, elle sera récupérée automatiquement depuis le Docker Hub (Répertoire des images Docker)
environment: # Les variables d'environment
POSTGRES_USER: ${POSTGRES_USER:-postgres} # Changez postgres après le tiret par le nom d'utilisateur que vous souhaitez
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-motdepasse} # Changez motdepasse après le tiret par le mot de passe que vous souhaitez
PGDATA: /data/postgres # Ne changez pas
volumes: # Les volumes de stockage utilisés
- postgres:/data/postgres # Nous lions le volume nommé postgres vers le chemin /data/postgres dans le containeur
ports: # Les ports utilisés par le containeur que nous souhaitons rendre accessible à l'extérieur du containeur
- "5432:5432" # Le port 5432 sera accessible depuis l'extérieur
networks: # Les réseaux virtuels qui seront utilisés pour communiquer entre les containeurs
- postgres # Le réseau postgres (qui est un réseau virtuel) permettra aux containeurs du réseau virtuel de communiquer entre eux.
restart: unless-stopped # Le service redémarrera automatiquement au démarrage de Docker Daemon et ne s'arrêtera pas tant que l'utilisateur ne l'arrêtera pas.
pgadmin: # Le nom du service
container_name: pgadmin_container # Le nom du containeur
image: dpage/pgadmin4 # Le nom de l'image Docker pour pgAdmin
environment: # Les variables d'environment
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-admin} # Changez admin après le tiret par l'email que vous souhaitez
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin} # Changez admin après le tiret par le mot de passe que vous souhaitez
volumes: # Les volumes de stockage utilisés
- pgadmin:/root/.pgadmin # Nous lions le volume nommé postgres vers le chemin /data/postgres dans le containeur
ports: # Les ports utilisés par le containeur que nous souhaitons rendre accessible à l'extérieur du containeur
- "${PGADMIN_PORT:-5050}:80" # Le port 5050 sera accessible depuis l'extérieur et sera redirigé vers le port 80 du containeur.
networks: # Les réseaux virtuels qui seront utilisés pour communiquer entre les containeurs
- postgres # Le réseau postgres permettra aux containeurs du réseau virtuel de communiquer entre eux.
restart: unless-stopped # Le service redémarrera automatiquement au démarrage de Docker Daemon et ne s'arrêtera pas tant que l'utilisateur ne l'arrêtera pas.networks: # Nous définissons les réseaux virtuels utilisés par le fichier
postgres:
driver: bridge # Le driver bridge est utilisé pour ce réseau virtuelvolumes: # Nous définissons les volumes utilisés par le fichier
postgres:
pgadmin:
Le texte semble un peu lourd, il sera plus lisible en le copiant dans votre fichier. Effectuez des modifications pour les variables d’environnements des deux services si vous le souhaitez (Chaque ligne est commenté afin de vous aider à comprendre ce qui à modifier et quel ligne correspond à quoi). Sauvegardez le fichier.
Désormais, ouvrez un terminal (Win+R et tapez cmd). Mettez-vous dans votre dossier en utilisant cd chemin_du_repertoire/
et exécuter la commande docker-compose up -d
. Cette commande va initialiser et déployer les services correspondant au fichier docker-compose.yml. Dans un premier temps, il crée les volumes et réseaux virtuels correspondant. Ensuite, il télécharge les images Docker des applications depuis le Docker Hub, et pour finir, il déploie les containeurs.
Une fois que les services sont crées et que vous avez la main libre sur le terminal (Aucune erreur n’est censé s’être affiché), c’est que les services ont été déployés correctement.
Vous pouvez désormais utiliser PostgreSQL via le terminal en vous connectant sur le terminal de ce container. Exécutez docker exec -it postgres_container bash
, ensuite psql -h localhost -p 5432 -U <postgres ou autre si modifié dans docker-compose.yml> -W
` et entrez le mot de passe ( motdepasse
ou autre si modifié dans docker-compose.yml).
Pour utiliser pgAdmin, rendez-vous dans un navigateur web et allez sur le lien http://localhost:5050
. Connectez-vous avec le nom d’utilisateur admin
(ou autre si modifié) et le mot de passe admin
(ou autre si modifié).
Cliquez sur Add New Server, mettez le nom que vous souhaitez. Ensuite naviguez dans l’onglet Connection, mettez en Hostname postgres
(qui est le hostname du PostgreSQL dans le réseau de pgAdmin), le Username en postgres
par défaut ou autre si modifié et le Password en motdepasse
par défaut ou autre si modifié. Validez et le serveur devrai apparaître dans le menu à gauche.
Et voilà ! Vous pouvez désormais exécuter vos requêtes SQL depuis le premier bouton en haut à gauche, indiqué sur la photo ci-dessus.
J’espère que ce tutoriel a été suffisamment clair dans les explications et qu’il vous aura permis d’arriver à la dernière étape ! Docker est un outil surpuissant pouvant accélérer grandement le déploiement de services, je vous conseille de vous y intéresser si vous ne connaissiez pas. Il est assez simple d’utilisation (malgré les apparences).
A bientôt pour de nouveaux articles !