Docker Node.js pa ka konekte ak baz done PostgreSQL la

posée 2 days ago10 vuesht

0

Mwen gen yon aplikasyon Node.js k ap kouri andedan Docker. PostgreSQL ap kouri nan yon lòt container. Lè mwen lanse aplikasyon an deyò Docker, li konekte byen ak baz done a. Men lè mwen mete aplikasyon an nan Docker, koneksyon an echwe.

const { Client } = require("pg");

const client = new Client({ host: "localhost", port: 5432, user: "postgres", password: "password", database: "myapp" });

client.connect();

===================================== Mesaj Erè Error: connect ECONNREFUSED 127.0.0.1:5432

Environnement :Node.js 20PostgreSQL 16Windows 11

🤖 Diagnostic IA

par claude-sonnet-5 · 2 days ago

Généré par IA. Ce n'est pas une réponse — la communauté ci-dessous le confirme ou le corrige. Vérifiez toujours avant de vous y fier.

  1. #1 Aplikasyon an ap eseye konekte sou 'localhost' andedan container li, men sa refere a container aplikasyon an menm, pa container PostgreSQL la — se yon erè klasik nan rezo Docker.

    90% confiance

    Essayez ceci

    Mete host la sou non service/container PostgreSQL la (pa egzanp 'postgres' si se sa non li nan docker-compose.yml oswa nan --network), epi tcheke ke tou de container yo sou menm rezo Docker ak: docker network inspect <network_name>
  2. #2 De container yo pa sou menm rezo Docker (docker network), sa fè non host/DNS resolution pa mache menm si ou chanje 'localhost'.

    50% confiance

    Essayez ceci

    Lanse: docker network ls epi docker inspect <container_id> pou konfime tou de container yo gen menm 'NetworkID', oswa itilize docker-compose ak yon 'networks:' definisyon komen.
  3. #3 Sèvè PostgreSQL la konfigire pou aksepte konsyon sèlman lokalman (postgresql.conf: listen_addresses='localhost' oswa pg_hba.conf pa gen antre pou rezo Docker a).

    30% confiance

    Essayez ceci

    Verifye postgresql.conf pou 'listen_addresses' epi pg_hba.conf pou wè si li aksepte koneksyon ki soti nan sub-rezo Docker a (pa egzanp 172.x.x.x/16).
1 l'ont trouvé utile · 0 en désaccord
posée 2 days ago

1 réponse

0

Kòz pwoblèm nan

Erè ECONNREFUSED 127.0.0.1:5432 la vin sitou paske ou itilize host: "localhost" nan config pg la. Andedan yon container Docker, localhost refere a container aplikasyon an li menm, pa container PostgreSQL la — se poutèt sa li mache lè w lanse l deyò Docker, men li echwe lè l andedan.

Sa pou w tcheke/korije

  1. Chanje host la pou l pwente sou non service/container PostgreSQL la (non sa a Docker rezoud otomatikman si tou de container yo sou menm rezo Docker) :
const { Client } = require("pg");
 
const client = new Client({
  host: "postgres", // ranplase ak non service/container PostgreSQL la nan docker-compose.yml
  port: 5432,
  user: "postgres",
  password: "password",
  database: "myapp"
});
 
client.connect();
  1. Asire w tou de container yo sou menm rezo Docker. Si w itilize docker-compose, sa fèt otomatikman si yo nan menm fichye docker-compose.yml san networks separe. Sinon, tcheke ak:
docker network ls
docker network inspect <network_name>

epi konfime tou de container gen menm NetworkID.

  1. Si sa toujou pa mache, verifye konfigirasyon PostgreSQL la limenm — se yon posibilite ki gen mwens chans men fasil tcheke:
    • postgresql.conflisten_addresses pa dwe limite sèlman a localhost.
    • pg_hba.conf → dwe gen yon antre ki pèmèt koneksyon ki soti nan sub-rezo Docker a (pa egzanp 172.x.x.x/16 oswa 0.0.0.0/0 pou tès).

Rezime

Pi gwo chans (90%) se senp fè chanje localhost pou non service PostgreSQL la nan config Node.js la, epi konfime tou de container yo sou menm rezo Docker. Si sa pa rezoud pwoblèm nan, tcheke pg_hba.conf/listen_addresses PostgreSQL la.

(Diskisyon an poko gen kòmantè adisyonèl ki konfime ki solisyon egzat la te mache — sa a se baze sèlman sou dyagnostik inisyal la.)

Connectez-vous pour dire si ça a marché.

answered 2 days ago

Sign in and verify your email to post an answer.