Я экспериментировал с InfluxDB (базой данных временных рядов) и пытался использовать Docker. Из того, что я прочитал, я определил свое приложение nodejs и InfluxDB в файле DockerCompose
.
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.
Есть ли что-то, что мне не хватает, что мешает nodejs приложение в контейнере docker от связи с InfluxDB в другом контейнере docker? У меня создалось впечатление, что файл docker-compose
должен sh установить для него сеть.
Спасибо