【发布时间】:2018-06-16 02:54:32
【问题描述】:
我的 docker compose 中有 3 个容器:2 个网络服务器,1 个 mongodb 实例。 Weather-service 向 Main-service 发送 http 请求,因此在我的 docker 配置中,我链接了这两个容器。要从天气服务访问主服务容器,我使用此地址:http://main-service:3000 当我运行:docker-compose up --build 时,我收到连接错误。 天气服务 dockerfile:
FROM node:8-alpine
EXPOSE 4000
ARG NODE_ENV
ENV NODE_ENV $NODE_ENV
RUN mkdir /app
WORKDIR /app
ADD package.json yarn.lock /app/
RUN yarn --pure-lockfile
ADD . /app
CMD ["yarn", "docker:start"]
主服务dockerfile
FROM node:8-alpine
EXPOSE 3000
ARG NODE_ENV
ENV NODE_ENV $NODE_ENV
RUN apk update && apk upgrade && \
apk add --no-cache bash git openssh
RUN mkdir /app
WORKDIR /app
ADD package.json yarn.lock /app/
RUN yarn --pure-lockfile
ADD . /app
CMD ["yarn", "docker:start"]
docker-compose.yml
version: "3"
services:
main-service:
build: main-service
volumes:
- .:/app/main-service
ports:
- "3000:3000"
env_file:
- ./main-service/.env
networks:
- app-network
links:
- weather-service
weather-service:
build: weather-service
environment:
- MONGO_URI=mongodb://mongodb:27017/forecast-data
volumes:
- .:/app/weather-service
ports:
- "4000:4000"
env_file:
- ./weather-service/.env
networks:
- app-network
depends_on:
- mongodb
mongodb:
image: mongo
networks:
- app-network
ports:
- "27017:27017"
networks:
app-network:
external: true
这是我收到的错误:
天气服务_1 | 0|索引 |请求错误:错误:连接 ECONNREFUSED 172.23.0.4:3000 天气服务_1 | 0|索引 |在 新的请求错误 (/app/node_modules/request-promise-core/lib/errors.js:14:15) 天气服务_1 | 0|索引 |在 Request.plumbing.callback (/app/node_modules/request-promise-core/lib/plumbing.js:87:29) 天气服务_1 | 0|索引 |在 Request.RP$callback [as _callback] (/app/node_modules/request-promise-core/lib/plumbing.js:46:31) mongodb_1 | 2018-01-06T13:46:19.281+0000 我存储 [conn2] createCollection: predict-data.refreshtokens 生成的 UUID: 85c26f12-464f-4d69-a969-713acf634c6f 天气服务_1 | 0|索引 | 在 self.callback (/app/node_modules/request/request.js:186:22) 天气服务_1 | 0|索引 |在 emitOne (events.js:116:13) 天气服务_1 | 0|索引 |在 Request.emit (events.js:211:7) 天气服务_1 | 0|索引 |在 Request.onRequestError (/app/node_modules/request/request.js:878:8) 天气服务_1 | 0|索引 |在 emitOne (events.js:116:13) 天气服务_1 | 0|索引 |在 ClientRequest.emit (events.js:211:7) 天气服务_1 | 0|索引 |在 Socket.socketErrorListener (_http_client.js:387:9) 天气服务_1 | 0|索引 |在 emitOne (events.js:116:13) 天气服务_1 | 0|索引 |在 Socket.emit (events.js:211:7) 天气服务_1 | 0|索引 |在 emitErrorNT (internal/streams/destroy.js:64:8) 天气服务_1 | 0|索引 |在 _combinedTickCallback (内部/进程/next_tick.js:138:11)weather-service_1 | 0|索引
|在 process._tickDomainCallback (内部/进程/next_tick.js:218:9)
【问题讨论】:
-
您是否使用
docker network create -d overlay app-network创建了一个名为app-network的网络? -
我用这个命令创建了应用网络:docker network create app-network
-
你解决了吗?
标签: javascript node.js docker docker-compose dockerfile