J'ai créé une image Ubuntu avec nginx, php et postgres.
Je souhaite connecter la base de données postgres dans mon image actuelle avec pgadmin
situé sur mon ordinateur local.
J'ai essayé d'utiliser Docker Inspector pour essayer d'utiliser l'image ip pour établir une connexion avec mon pgadmin local, mais sans grand succès. J'ai également essayé de configurer des ports sur le réseau local pour que la connexion fonctionne.
C'est une question valide. Je ne sais pas pourquoi les gens pensent "ne semble pas possible de répondre à cette question".
Alors, voici comment je fais ce que vous essayez de faire:
Tirez l'image postgres de Docker Hub
docker pull postgres:latest
Exécuter le conteneur en utilisant la commande ci-dessous
docker run -p 5432:5432 postgres
Utilisation de la commande inspect de docker pour trouver l'IP
Utilisez cette adresse IP, ce port, ce nom d'utilisateur et ce mot de passe pour vous connecter à PGADMIN.
Vous pouvez également faire un simple telnet comme ci-dessous pour confirmer si vous pouvez accéder à Docker Postgres Container:
telnet IP_ADDRESS 5432
Ce que j'ai fait avec succès sur Windows 10 en cours d'exécution docker pour Windows 1.12.6 (9655), la procédure est la suivante
Tirez le dernier postgres
docker pull postgres:latest
lancez le conteneur postgres:
docker run -d -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password123 --name db-my -p 5432:5432 --restart=always postgres
Puis installé la dernière version de pgAdmin4 depuis pgadmin website
Lancez pgAdmin 4, créez un nouveau serveur et saisissez les données suivantes.
Vous pouvez également combiner Postgres et Pgadmin dans un fichier docker-compose
et vous connecter en tant qu'utilisateur [email protected]
, pwd: admin
. Pour ajouter le serveur Posgres, utilisez le nom d’hôte postgres
, le port 5432
.
version: '3'
services:
postgres:
image: postgres
hostname: postgres
ports:
- "6543:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: TEST_SM
volumes:
- postgres-data:/var/lib/postgresql/data
restart: unless-stopped
pgadmin:
image: dpage/pgadmin4
depends_on:
- postgres
ports:
- "5555:80"
environment:
PGADMIN_DEFAULT_EMAIL: [email protected]
PGADMIN_DEFAULT_PASSWORD: admin
restart: unless-stopped
volumes:
postgres-data:
Vous devez exposer le port postgres du conteneur à votre système local. Vous faites cela en exécutant votre conteneur comme ceci:
docker run -p 5432:5432 <name/id of container>
lors de la connexion avec votre client graphique ou votre interface de ligne de commande, veillez à utiliser l'adresse IP non localhost, même si votre adresse IP est l'adresse IP localhost.
docker ps
vous donnerait l'adresse IP de votre conteneur postgres.
Si pgAdmin est destiné à être exécuté dans le même hôte/invité Ubuntu, vous devez lier le conteneur postgres afin qu'il puisse être résolu par un nom.
1. Exécutez un conteneur postgres:
docker run --name some-postgres -e POSTGRES_PASSWORD=postgres -d postgres
2. Exécutez le conteneur pgAdmin:
docker run -p 80:80 --link some-postgres -e "[email protected]" -e "PGADMIN_DEFAULT_PASSWORD=postgres" -d dpage/pgadmin4
3. Maintenant, lors de l'ajout d'un nouveau serveur dans l'application Web phAdmin, utilisez some-postgres
comme nom de serveur
Notez le --link some-postgres
lorsque nous avons évoqué pgAdmin. Cette commande rend le conteneur postgres visible au conteneur pgAdmin.
C'est ce que j'ai fait
docker run -p 5432:5432 --name container-postgresdb -e POSTGRES_PASSWORD=admin -d postgres
docker run -p 5050:80 -e "[email protected]" -e "PGADMIN_DEFAULT_PASSWORD=admin" -d dpage/pgadmin4
Host: Host.docker.internal
database: postgres
user: postgres
password: admin
Ça fonctionne bien!!!!!
La solution que j'ai essayée et travaillée pour moi était de créer un fichier de composition de docker dans lequel j'ai inclus postgress et pgadmin en tant que services. Pour plus de détails: Connexion de pgadmin à postgres dans docker