yml node error econnrefused compose node.js postgresql docker sequelize.js

node.js - error - ECONNREFUSED para Postgres en nodeJS con dockers



docker compose yml node js (1)

Su DATABASE_URL refiere a 127.0.0.1 , que es el adaptador de bucle invertido (más here ). Esto significa "conectar conmigo mismo".

Al ejecutar ambas aplicaciones (sin usar Docker) en el mismo host, ambas son direccionables en el mismo adaptador (también conocido como localhost ).

Al ejecutar ambas aplicaciones en contenedores, no están en localhost como antes. En su lugar, debe apuntar el contenedor web a la dirección IP del contenedor db en el adaptador docker0 - que docker-compose establece para usted.

Cambio:

DATABASE_URL: postgres://username:[email protected]:5432/mydatabase

a

DATABASE_URL: postgres://username:pgpassword@db:5432/mydatabase

Esto funciona gracias a los enlaces de Docker: el contenedor web tiene un archivo ( /etc/hosts ) con una entrada de db apunta a la IP en la que se encuentra el contenedor de db . Este es el primer lugar donde un sistema (en este caso, el contenedor) se verá al intentar resolver los nombres de host.

Estoy creando una aplicación que se ejecuta en NodeJS usando postgresql. Estoy usando SequelizeJS como ORM. Para evitar usar el demonio real de Postgres y tener nodejs en mi propio dispositivo, estoy usando contenedores con Docker-Compose.

cuando ejecuto docker-compose up inicia la base de datos pg

database system is ready to accept connections

y el servidor de nodejs. pero el servidor no puede conectarse a la base de datos.

Error: connect ECONNREFUSED 127.0.01:5432

Si trato de ejecutar el servidor sin usar contenedores (con nodejs reales y postgresd en mi máquina), funciona.

Pero quiero que funcione correctamente con contenedores. No entiendo lo que estoy haciendo mal.

Aquí está el archivo docker-compose.yml

web: image: node command: npm start ports: - "8000:4242" links: - db working_dir: /src environment: SEQ_DB: mydatabase SEQ_USER: username SEQ_PW: pgpassword PORT: 4242 DATABASE_URL: postgres://username:[email protected]:5432/mydatabase volumes: - ./:/src db: image: postgres ports: - "5432:5432" environment: POSTGRES_USER: username POSTGRES_PASSWORD: pgpassword

¿Podría alguien ayudarme por favor?

(Alguien a quien le gusta docker :))