我正在使用postgresql在NodeJS上构建一个应用程序。我使用SequelizeJS作为ORM。为了避免使用真正的postgres守护进程,并在我自己的设备上使用nodejs,我使用了带有docker编写的容器。
当我运行docker-compose up
时,它将启动pg数据库
database system is ready to accept connections
和nodejs服务器。但是服务器无法连接到数据库。
Error: connect ECONNREFUSED 127.0.01:5432
如果我试图在不使用容器的情况下运行服务器(在我的机器上有真正的nodejs和postgresd ),它就能工作。
但我希望它能和容器一起正常工作。我不明白我做错了什么。
这是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:pgpassword@127.0.0.1:5432/mydatabase
volumes:
- ./:/src
db:
image: postgres
ports:
- "5432:5432"
environment:
POSTGRES_USER: username
POSTGRES_PASSWORD: pgpassword
有人能帮帮我吗?
(喜欢码头的人:)
发布于 2019-12-15 06:15:44
我有两个容器,一个是postgresdb,另一个是调用节点。
我将节点queries.js更改为:
const pool = new Pool({
user: 'postgres',
host: 'localhost',
database: 'users',
password: 'password',
port: 5432,
})
至
const pool = new Pool({
user: 'postgres',
host: 'postgresdb',
database: 'users',
password: 'password',
port: 5432,
})
我所要做的就是将主机更改为容器名"postgresdb“,这为我解决了这个问题。我相信这可以做得更好,但我只是在过去的两天里学到了码头撰写/ node.js的东西。
https://stackoverflow.com/questions/33357567
复制相似问题