J'essaye d'utiliser Postgresql avec python. J'ai utilisé le menu fixe suivant pour composer le fichier.
conn = psycopg2.connect(
database = "db_test",
user ="admin",
password = "admin_123",
host = "db"
)
Avec le code suivant, j'essaye de me connecter à la base de données.
version: '3.1'
services:
db:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: admin_123
POSTGRES_USER: admin
adminer:
image: adminer
restart: always
ports:
- 8080:8080
Mais j'obtiens cette erreur.
OperationalError: impossible de traduire le nom d'hôte "db" en adresse: nodename ni servname fournis, ou inconnus
Qu'est-ce que je fais mal?
3 Réponses :
Vous devez exposer le port BD dans le docker composez comme ceci:
db:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: admin_123
POSTGRES_USER: admin
ports:
- "5432:5432"
Et puis connectez-vous avec localhost:5432
Un autre scénario possible,
Vérifiez si des ports ont été utilisés ou non par un autre conteneur docker. Utilisez la commande:
$ docker container ls --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}" -a
Voici mon docker-compose.yml
$ cat docker-compose.yml
host: localhost port: 5432 maintenance database: postgres username: abcUser password: Password
Maintenant dans PgAdmin4, vous pouvez configurer un nouveau serveur comme ci-dessous pour tester le connexion:
version: '3.1' # specify docker-compose version
services:
dockerpgdb:
image: postgres
ports:
- "5432:5432"
restart: always
environment:
POSTGRES_PASSWORD: Password
POSTGRES_DB: dockerpgdb
POSTGRES_USER: abcUser
volumes:
- ./data:/var/lib/postgresql%
Copie possible de docker-compose: différence entre le réseau et le lien
Comment ? pourriez-vous expliquer? J'ai lu ça mais je ne l'ai pas compris
Où s'exécute votre code Python; sur l'hôte ou dans un conteneur? Si dans un conteneur, comment l'avez-vous commencé?
Je travaille avec Jupyter là-bas
Désolé, ce lien n'est probablement pas pertinent ici. Je pensais que vous essayez d'accéder à
dbdansadminer, est-ce correct?J'essaye d'accéder à DB avec python
@TheTechGuy Essayez-vous de vous connecter à la base de données depuis votre machine hôte?
oui, la même machine sur laquelle le docker fonctionne, j'ai juste besoin d'insérer des données dans la base de données. La base de données s'exécute dans Docker. et j'ai un notebook Jupyter avec lequel j'essaye de me connecter. Pendant que j'essaie de me connecter, j'ai l'erreur mentionnée.