我正在尝试第一次使用Docker。我有一个MEAN堆栈应用程序,我正在尝试为其创建Dockerfile和docker-compose文件。我的Node服务器正在运行并显示Angular前端,但是当该应用尝试向Mongo数据库发出初始请求时,却收到ERR_EMPTY_RESPONSE,并且也没有将数据保存到该数据库。
我的docker-compose文件如下所示:
version: "2"
services:
app:
container_name: app
restart: always
build: .
ports:
- "3000:3000"
links:
- mongo
mongo:
container_name: mongo
image: mongo
volumes:
- ./data:/data/db
ports:
- "27017:27017"
我的Dockerfile看起来像这样:
FROM node:latest
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app
RUN npm i
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
在我的server.js文件中,有以下几行代码:
const MONGODB_URI = 'mongodb://mongo:27017/myDB';
// connect to mongodb
mongoose.Promise = Promise;
mongoose.connect(MONGODB_URI, { useNewUrlParser: true })
.catch((err) => console.error(err));
我似乎无法弄清楚是什么原因造成的,任何帮助将不胜感激。当我运行docker container ls
时,它显示了两个容器,一个用于我的应用程序,一个用于mongo,但是mongo似乎没有工作。
编辑:这是docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
16451b5b6f9d myapp_app "npm start" 2 days ago Up 2 days 0.0.0.0:3000->3000/tcp app
ad21af079c62 mongo "docker-entrypoint.s…" 2 days ago Up 2 days 0.0.0.0:27017->27017/tcp mongo