2017-03-11 10 views
3

Ich kann keine Verbindung zum Standard-Postgres-Image von einem separaten Docker-Dienst herstellen, der Knoten & Sequelize ausführt.Keine Verbindung zu Postgres-Container mit Docker Compose von Sequelize

Ich gehe davon aus, dass mein Setup des Behälters nicht korrekt ist und vielleicht auch meine Verbindungsinformationen ist zu falsch, weil ich, wenn ich docker-compose --build laufe ich nicht auf meine Datenbank mit der Verbindungsinformation verbinden:

Host: 0.0.0.0 
Port: 5432 
User: guy 
Password: password 
Database: engauge 

die Fehlermeldung ist

Unable to connect to the database: { SequelizeConnectionRefusedError: connect ECONNREFUSED 0.0.0.0:5432 
at /usr/src/app/node_modules/sequelize/lib/dialects/postgres/connection-manager.js:98:20 

ich mit einer YML Datei leite die

version: '2' # specify docker-compose version 

# Define the services/containers to be run 
services: 
    web: # name of the first service 
    build: . # specify the directory of the Dockerfile 
    ports: 
     - "3000:3000" # specify port forewarding 
    links: 
     - database 
    database: # name of the third service 
    image: postgres # specify image to build container from 
    ports: 
     - "5432:5432" # specify port forewarding 
    environment: 
     - POSTGRES_USER:'guy' 
     - POSTGRES_PASSWORD:'password' 
     - POSTGRES_DB:'engauge' 
012 sieht wie folgt aus

Und meine Verbindung aus meinem Web-Service wie folgt aussieht

const sequelize = new Sequelize('postgresql://guy:[email protected]/engauge'); 
+0

Sie können nur auf 0.0.0.0 hören, Sie können keine Verbindung zu ihm herstellen. Hast du 127.0.0.1 ausprobiert? (Oder wie auch immer die IP-Adresse des Containers lautet.) – kennytm

Antwort

6

Die 0.0.0.0 die hörende Adresse ist, es auf allen Schnittstellen zu hören verwendet wird und ist keine IP, die Sie verbinden. Geben Sie in Ihrer Verbindungszeichenfolge den Dienstnamen für den Hostnamen an, mit dem eine Verbindung hergestellt werden soll, in Ihrem Fall database.

+0

Vielen Dank! Ich füge auch hinzu, dass ich die vorhandenen Volumes und Container löschen musste, nachdem ich diese Änderung vorgenommen hatte, damit sie wirksam wurden. –

+0

Ich sehe keine der oben aufgeführten Volumen. Mit compose können Sie einfach 'docker-compose up -d' ausführen, um neue Containerkonfigurationen anzuwenden. Es ist normalerweise intelligent genug, um zu sehen, welche Einstellungen geändert wurden und die erforderlichen Container neu erstellen. – BMitch

Verwandte Themen