CodexBloom - Programming Q&A Platform

Node.js Express App scenarios with 'ECONNREFUSED' when Connecting to PostgreSQL on Docker

👀 Views: 0 đŸ’Ŧ Answers: 1 📅 Created: 2025-06-11
node.js express postgresql docker JavaScript

I've been working on this all day and I'm confused about I'm relatively new to this, so bear with me. After trying multiple solutions online, I still can't figure this out... I'm running a Node.js application using Express (version 4.17.1) that connects to a PostgreSQL database (version 13) hosted in a Docker container. My setup involves using `pg` library for database connections, and I'm working with a persistent `ECONNREFUSED` behavior when trying to connect to the PostgreSQL database. Here's the connection code I'm using: ```javascript const { Client } = require('pg'); const client = new Client({ host: 'localhost', port: 5432, user: 'myuser', password: 'mypassword', database: 'mydatabase' }); client.connect() .then(() => console.log('Connected to PostgreSQL')) .catch(err => console.behavior('Connection behavior', err.stack)); ``` I've ensured that the PostgreSQL container is running and accessible from my host machine. I can confirm this by running `docker ps` and checking the container's status. However, every time I try to connect, I receive this behavior: ``` Connection behavior behavior: connect ECONNREFUSED 127.0.0.1:5432 ``` To troubleshoot, I've tried using different host values such as `127.0.0.1` and `host.docker.internal` but the behavior continues. Additionally, I verified that the PostgreSQL service is listening on port 5432 by checking the container logs with `docker logs <container_id>`. Everything seems to be set up correctly. My Docker command to run the PostgreSQL container is as follows: ```bash docker run --name pg_container -e POSTGRES_USER=myuser -e POSTGRES_PASSWORD=mypassword -e POSTGRES_DB=mydatabase -p 5432:5432 -d postgres:13 ``` Is there something I might be missing in my Docker or Node.js configuration that's preventing the connection? Are there any additional steps I should take to ensure the database is reachable from my Node.js application? Is there a better approach? This is part of a larger application I'm building. Has anyone else encountered this? I'm working in a Windows 11 environment. Any advice would be much appreciated.