我一直在尝试使用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
文件应该为它建立网络。
谢谢
答案 0 :(得分:0)
@DavidMaze和@yogeshwar谢谢您的答复!是的,在我的数据库连接中,我将其更改为influx-db
,这就是我命名的服务,它就像一个魅力一样!感谢您的帮助!