我目前在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,但仍然是相同的错误。