【发布时间】:2021-01-07 20:03:11
【问题描述】:
我正在尝试为 postgres 和节点连接容器。这是我的设置:
yml 文件:
version: "3"
services:
postgresDB:
image: postgres:alpine
container_name: postgresDB
ports:
- "5432:5432"
environment:
- POSTGRES_DB=myDB
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=Thisisngo1995!
express-server:
build: ./
environment:
- DB_SERVER=postgresDB
links:
- postgresDB
ports:
- "3000:3000"
Dockerfile:
FROM node:12
WORKDIR /usr/src/app
COPY package.json ./
RUN npm install
COPY . .
COPY ormconfig.docker.json ./ormconfig.json
EXPOSE 3000
CMD ["npm", "start"]
连接到 postgres:
let { Pool, Client } = require("pg");
let postgres = new Pool({
host: "postgresDB",
port: 5432,
user: "postgres",
password: "Thisisngo1995!",
database: "myDB",
});
module.exports = postgres;
这是我处理端点的方式:
exports.postgres_get_controller = (req, resp) => {
console.log("Reached Here");
postgres
.query('SELECT * FROM public."People"')
.then((results) => {
console.log(results);
resp.send({ allData: results.rows });
})
.catch((e) => console.log(e));
};
每当我尝试触摸上面的端点时,我都会在容器中收到此错误:
原因是什么?
注意:只需更改“主机:本地主机”,我就可以在我的本地机器上运行一切(没有 docker)
【问题讨论】:
-
如您所见,您的应用程序尝试连接到
localhost,而您没有使用DB_HOST环境变量。从 env 中获取它,而不是在 postgres 配置中放置 localhost。 -
@michalk 抱歉,我正在编辑此文档。我实际上是使用“postgresDB”作为主机(帖子已更新)。如果我在连接客户端时已经更改了这个,我需要在 DB_HOST 中添加什么?
-
您的屏幕截图显示它仍在尝试连接到
localhost。 -
@michalk 我不确定我会从上面的代码库中添加/更改什么。我的主机已经指向名为“postgresDB”的服务。如何让它不连接到 127.0.0.1?如果我可以问,特别是我没有得到什么?这将非常有帮助,因为我已经坐了几天了。
标签: node.js postgresql docker docker-compose dockerfile