docker上的Mongodb错误

时间:2018-02-06 00:36:53

标签: mongodb docker docker-compose

我有dockerfiledocker-compose

当我尝试运行docker-compose时会发生这种情况

photo

有人知道如何修复吗?

修改1

dockerfile

FROM node

RUN apt-get update && apt-get install -y --no-install-recommends build-essential \
 && apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 \
 && echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.2.list \
 && apt-get update \
 && apt-get install -y mongodb-org

RUN useradd --user-group --create-home --shell /bin/false app &&\
  npm install --global npm

ENV HOME=/home/app

COPY package.json $HOME/library/
RUN chown -R app:app $HOME/*

USER root
WORKDIR $HOME/library
RUN npm install --silent --progress=false
COPY . $HOME/library
RUN chown -R app:app $HOME/*
RUN npm install --build-from-source bcrypt

CMD ["npm", "start"]

docker-compose

version: '2'
services:
  db:
    image: mongo
    command: "mongod"
    ports:
      - "27018:27018"
  library:
    build:
      context: .
      dockerfile: Dockerfile
    command: node_modules/.bin/nodemon --exec npm start
    environment:
      NODE_ENV: development
    ports:
      - 3000:3000
    volumes:
      - .:/home/app/library
      - /home/app/library/node_modules
    links:
      - db

修改2

正在运行docker ps -a here

第一个容器docker log here

第二个容器docker log here

编辑3

mongoose.connect(config.database);

这就是我在database

上关联server.js的方式

1 个答案:

答案 0 :(得分:1)

您的Docker Compose文件的MongoDB端口为27018 => 27018,但是您的节点应用程序错误说它正在尝试连接到127.0.0.1:27017。

由于Docker的网络工作原理(各种各样很棒),您应该在Compose文件中将端口更改为27017而不是27018。将Node应用程序中的MongoDB连接字符串更新为db:27017

你不应该在Docker中使用127.0.0.1,因为它期望你连接的任何东西都在同一个容器中运行。