无法使用mongoose连接到mongo docker映像

Phi*_*ann 1 mongoose mongodb express docker docker-compose

我正在尝试使用node和mongo运行一个简单的docker设置:

Dockerfile:

 FROM node:8.9.4-alpine
 RUN mkdir /app
 WORKDIR /app
 COPY package.json /app/
 COPY package-lock.json /app/
 RUN npm install
 ADD . /app/
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml:

version: '3'

services:
  db:
    image: 'mongo'
    ports:
      - "27017:27017"
  api:
    build: .
    restart: always
    command: sh -c "npm install && npm run start"
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    environment:
      PORT: 3000
    depends_on:
      - db
Run Code Online (Sandbox Code Playgroud)

现在在我的app.js中,我像这样连接到mongo:

mongoose.connect('mongodb://localhost:27017')
  .catch(err => {
    console.log(err)
  })
Run Code Online (Sandbox Code Playgroud)

但是我得到了 failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]

mongo容器似乎可以启动并可以正常运行waiting for connections on port 27017

我的设置有什么问题?我也试过换出localhostmongo连接时,却没有任何效果。

Phi*_*ann 5

我没有意识到我将数据库容器命名为db而不是mongo,所以我要做的就是在app.js中切换该名称:

mongoose.connect('mongodb://db:27017')
  .catch(err => {
    console.log(err)
  })
Run Code Online (Sandbox Code Playgroud)