Docker Influx数据库和Nodejs-拒绝连接

时间:2020-05-08 01:11:19

标签: node.js docker docker-compose influxdb

我一直在尝试使用InfluxDB(时间序列数据库)并尝试使用Docker。通过阅读,我已经在DockerCompose文件中定义了我的nodejs应用和InfluxDB。

Dockerfile

FROM node:12

# Create working directory
WORKDIR /usr/src/app

COPY package.json .

RUN npm install

COPY . .

CMD "node" "websocket.js"

docker-compose.yml

version: '3'
services:
  web:
    image: docker-td-node-api
    build: .
    command: "node websocket.js"
    depends_on:
      - "influx-db"
  influx-db:
    image: influxdb
    ports: 
      - "8086:8086"

一切正常启动,除了我的nodejs应用尝试与docker容器通信(使用InfluxDB nodejs库)时,它总是说:

web_1        | Getting database names...
web_1        | Error: connect ECONNREFUSED 127.0.0.1:8086
web_1        |     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
web_1        |   errno: 'ECONNREFUSED',
web_1        |   code: 'ECONNREFUSED',
web_1        |   syscall: 'connect',
web_1        |   address: '127.0.0.1',
web_1        |   port: 8086
web_1        | }

我觉得很奇怪,因为我可以从一个单独的终端通过端口8086通过以下方式查询数据库:

$curl -G http://127.0.0.1:8086/query --data-urlencode "q=CREATE DATABASE mydb"
{"results":[{"statement_id":0,"messages":[{"level":"warning","text":"deprecated use of 'CREATE DATABASE mydb' in a read only context, please use a POST request instead"}]}]}

当我使用docker-compose up启动时,它同时启动了nodejs和InfluxDB,然后可以在单独的终端窗口中启动nodejs应用程序,它通过端口8086完美连接。

我是否缺少阻止Docker容器中的nodejs应用与另一个Docker容器中的InfluxDB通信的东西?我印象中docker-compose文件应该为它建立网络。

谢谢

1 个答案:

答案 0 :(得分:0)

@DavidMaze和@yogeshwar谢谢您的答复!是的,在我的数据库连接中,我将其更改为influx-db,这就是我命名的服务,它就像一个魅力一样!感谢您的帮助!