如何使我的nodeJS容器与我的mongoDB容器连接?

问题描述:

我有两个相当简单的Docker容器,其中一个包含一个NodeJS应用程序,另一个只是一个MongoDB容器。如何使我的nodeJS容器与我的mongoDB容器连接?

Dockerfile.nodeJS

FROM node:boron 

ENV NODE_ENV production 

# Create app directory 
RUN mkdir -p /node/api-server 
WORKDIR /node/api-server 

# Install app dependencies 
COPY /app-dir/package.json /node/api-server/ 
RUN npm install 

# Bundle app source 
COPY /app-dir /node/api-server 

EXPOSE 3000 
CMD [ "node", "." ] 

Dockerfile.mongodb

FROM mongo:3.4.4 

# Create database storage directory 
VOLUME ["/data/db"] 

# Define working directory. 
WORKDIR /data 

# Define default command. 
CMD ["mongod"] 

EXPOSE 27017 

他们都独立工作,相互,但是当我创建它的2个独立的容器,就不会互相沟通(为什么?)。在线有很多关于做它的教程withwithout docker-compose。但他们都使用--link。这是a deprecated legacy feature of Docker。所以我不想走这条路。 2017年有什么方法可以在2个码头集装箱之间建立连接?

+1

的泊坞文档中有[ “容器之间的通信”](HTTPS:/ /docs.docker.com/engine/userguide/networking/default_network/container-communication/#communication-between-containers)作为一般网络中较大主题的话题。 –

您可以创建一个特定的网络

docker create network -d overlay boron_mongo

,然后你这样的命令来启动这两个容器

docker run --network=boron_mongo...

提取物

https://docs.docker.com/compose/networking/

优选的方法是使用搬运工-撰写

看一看

配置缺省网络

https://docs.docker.com/compose/networking/#specifying-custom-networks