无法连接nodeJs和postgres容器

时间:2019-07-03 16:27:15

标签: node.js postgresql docker docker-compose

我目前在docker上遇到一些问题,并且在其中运行postgres时将其连接到节点项目。我的docker-compose文件如下所示:

#node 8
FROM node:8

#Create app directory
WORKDIR /usr/src/app

#Install app dependencies
COPY package*.json ./

RUN npm install

#Bundle app source
COPY . . 

EXPOSE 8080

CMD ["npm", "start"]

我的Dockerfile如下:

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

const client = new Client({
    user: 'postgres',
    host: 'db',
    database: 'mydb',
    password: 'mypassword',
    port: 5432
})

client.connect()

我的Express服务器具有以下设置:

docker-compose up

运行postgres@mydb FATAL: password authentication failed for user "postgres" postgres@mydb DETAIL: User "postgres" has no password assigned. 时,我首先收到密码验证错误:

pg_hba.conf

为了解决此错误,我做了以下步骤:

1a)在postgres容器中打开local all postgres peer并更改了行

local all postgres trust

postgresql.conf

1b)打开listen_addresses = 'localhost'并更改行

listen_addresses = '*'service postgresql restart

2)重新启动服务器

ALTER USER postgres with password 'mypassword';

3)登录到psql并设置密码

sudo docker exec node_container_id node index.js

4)然后我将sql备份文件还原到容器内的db中

但是当我在nodejs容器中运行节点应用程序

events.js:183 throw er; // Unhandled 'error' event ^ Error: listen EADDRINUSE 0.0.0.0:8080 at Server.setupListenHandle [as _listen2] (net.js:1360:14) at listenInCluster (net.js:1401:12) at doListen (net.js:1510:7) at _combinedTickCallback (internal/process/next_tick.js:142:11) at process._tickCallback (internal/process/next_tick.js:181:9) at Function.Module.runMain (module.js:696:11) at startup (bootstrap_node.js:204:16) at bootstrap_node.js:625:3

我遇到以下错误:

killall node

我没有在8080端口上运行的其他进程/程序,当我执行{{1}}时,它会将我从docker容器中退出。我什至将端口从8080更改为3000,但仍然是相同的错误。

0 个答案:

没有答案