Node.js (Docker Compose)连接节点和postgres时未处理的Promisejection警告
我正在尝试连接postgres和node的容器。以下是我的设置: yml文件:Node.js (Docker Compose)连接节点和postgres时未处理的Promisejection警告,node.js,postgresql,docker,docker-compose,dockerfile,Node.js,Postgresql,Docker,Docker Compose,Dockerfile,我正在尝试连接postgres和node的容器。以下是我的设置: yml文件: version: "3" services: postgresDB: image: postgres:alpine container_name: postgresDB ports: - "5432:5432" environment: - POSTGRES_DB=myDB - POSTGRES_USER=
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)您的postgres数据库名称和用户名应该相同,您可以使用它们来确保以正确的顺序启动相互依赖的服务 请参见下文,了解如何将其用于您的案例
Dockerfile
的最后一部分,如下所示李>
如您所见,您的应用程序尝试连接到
localhost
,而您没有使用DB\u HOST
环境变量。在postgres配置中,从env and place而不是localhost获取它。@michalk很抱歉,我正在编辑此文档。我实际上是在使用“postgresDB”作为主机(帖子已经更新)。如果我在连接客户端时已经更改了DB_主机,那么我需要在DB_主机中添加什么?您的屏幕截图显示,它仍然尝试连接到localhost
@michalk。我不确定我将在上面的代码库中添加/更改什么。我的主机已经指向名为“postgresDB”的服务。如何使其不连接到127.0.0.1?如果我可以问的话,具体在哪里,我没有得到什么?这将是非常有帮助的,因为我已经坐在这几天了。我不确定这将如何解决我的问题。这只会影响数据库的登录凭据(当前在用户:postgres和创建的数据库名:myDB上)。这些不会影响应用程序和容器环境中postgres之间的通信。@如果答案有帮助,请记住接受它。请参阅
# ...
# this will be used to check if DB is up
ADD https://github.com/ufoscout/docker-compose-wait/releases/download/2.7.3/wait ./wait
RUN chmod +x ./wait
CMD ./wait && npm start
express-server:
build: ./
environment:
- DB_SERVER=postgresDB
- WAIT_HOSTS=postgresDB:5432
- WAIT_BEFORE_HOSTS=4
links:
- postgresDB
depends_on:
- postgresDB
ports:
- "3000:3000"