连接 ECONNREFUSED 127.0.0.1:8086 InfluxDb - Docker 容器

问题描述 投票:0回答:1

我的 Node/Express 应用程序通过 http://localhost:8086

http://127.0.0.1/8086
连接到
InfluxDB 2.0

InfluxDB docker container
是由我无法控制的人创建的。

在我的节点应用程序中,我连接到 InfluxDB 进行本地开发,如下所示,

env.js

{
    influxDB: {
        url: 'http://localhost:8086',  // OR http://127.0.0.1/8086
        token: 'xxxx==',
        org: "xxx",
        bucket: "xxx",
    }
    ...
    ...
}

它连接到InfluxDB以在本地获取/获取数据。效果很好。

现在,我创建了一个 docker 映像和容器,我的节点应用程序可以在其中运行,但无法连接到 Influxdb

它会抛出错误。

连接ECONNREFUSED 127.0.0.1:8086

docker-compose.yml(用于节点应用程序)

version: '3.8'
services:
  my-node-app:
    build:
      context: ../
      dockerfile: Dockerfile
    image: "mynodeapp:1.1.0"
    container_name: "mynodeapp-container"
    ports:
      - 5000:5000               <------ port at which my node app works

缺少什么

influxDB 容器或我的 docker-compose 文件是否需要进行任何更改?

node.js docker docker-compose dockerfile containers
1个回答
0
投票

您误解了容器的工作原理。您可以将容器视为它自己的 Linux 系统,因此除非 InfluxDB 位于节点应用程序容器内,否则

localhost
127.0.0.1
(也是 localhost)都将无法工作。

通常在像您这样的部署中,您需要连接到单独的 InfluxDB 容器,因此如果

http://mynodeapp-db:8086
是数据库容器的名称,则 url 最终将类似于
mynodeapp-db
。请参阅Docker Hub了解更多详细信息。

如果您在主机上运行数据库并且在容器中运行应用程序,您将需要查看这个答案

如果您计划使用 Docker 进行开发,则需要阅读有关 Docker 网络的内容。一开始可能会有点令人困惑,但文档很强大。

© www.soinside.com 2019 - 2024. All rights reserved.