簡體   English   中英

docker-compose with Node 和 Mongo 不能同時啟動

[英]docker-compose with Node and Mongo doesn't start both

症狀:

  1. 如果我運行docker-compose run mongo ,Mongo 開始正常
  2. 如果我運行docker-compose run iotmapdocker-compose run iotmap docker-compose up只有節點啟動,而不是 Mongo 容器加上

2a) docker-compose ps什么都不顯示, docker ps顯示

e968900e41cc        6e70e14f1339        "/bin/sh -c 'npm sta…"   3 minutes ago       Up 2 minutes        3000/tcp            priceless_hawking

2b) 我收到以下錯誤

(node:25) UnhandledPromiseRejectionWarning: MongoTimeoutError: 服務器選擇在 Timeout._onTimeout (/usr/src/app/node_modules/mongodb/lib/core/sdam/server_selection.js:309:9) at listOnTimeout (internal /timers.js:537:17) 在 processTimers (internal/timers.js:481:7) (node:25) UnhandledPromiseRejectionWarning:未處理的承諾拒絕。 這個錯誤要么是因為在沒有 catch 塊的情況下拋出了異步函數,要么是因為拒絕了一個沒有用 .catch() 處理過的承諾。 要在未處理的承諾拒絕時終止節點進程,請使用 CLI 標志--unhandled-rejections=strict (請參閱https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode )。 (rejection id: 1) (node:25) [DEP0018] DeprecationWarning:不推薦使用未處理的承諾拒絕。 將來,未處理的承諾拒絕將使用非零退出代碼終止 Node.js 進程。 錯誤:中止。

docker-compose.yml:

volumes:
  mongodata:
services:
  iotmap:
    container_name: iotmap
    build: .
    restart: always
    ports:
      - "3000:3000"
    links:
      - mongo
    depends_on:
      - mongo
  mongo:
    container_name: mongo
    image: mongo:latest
    restart: always
    ports:
      - "27017:27017"
    volumes:
     - mongodata:/data/db

和 Dockerfile:

FROM node:latest
WORKDIR /usr/src/app
COPY package.json /usr/src/app/
RUN npm install --no-optional --no-shrinkwrap --no-package-lock
COPY . /usr/src/app
EXPOSE 3000
RUN npm start

在 app.js 中:

mongoose.connect( "mongodb://mongo:27017/iotmap", {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true } );

RUN npm start更改為CMD [ "npm", "start" ]一切都像魅力一樣開始!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM