我有dockerfile
和docker-compose
当我尝试运行docker-compose
时会发生这种情况
有人知道如何修复吗?
修改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
的方式
答案 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,因为它期望你连接的任何东西都在同一个容器中运行。