What I have
我尝试将我的nodejs应用程序连接到mongoDB-Container . 我用Mediums-Tutorial打开了这个,所以我的dockerfiles看起来像这样:
Dockerfile
FROM node:carbon
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8085
CMD ["npm","start"]
docker-compose.yml
version: "2"
services:
metis:
build: .
ports:
- "8085:8085"
links:
- mongo
mongo:
image: mongo
volumes:
- /data/mongodb/db:/data/db
ports:
- "27017:27017"
但是当我尝试连接到数据库时,我接受了
name "MongoNetworkError"
message "failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]"
我的_1680158看起来像这样:
let mongodb = require('mongodb').MongoClient
const url = 'mongodb://localhost:27017'
const dbName = 'metis'
mongodb.connect(url, (err, client) => {
if (err) reject(err)
else {
const db = client.db(dbName)
db.collection(type + ":" + entity).insertOne(document, (error, result) => {
if (error) reject(error)
else { resolve(result) }
})
client.close()
}
})
})
当我只是自己启动节点应用程序和mongodb-server时,它正常工作 . 在Docker中编写时,我无法获得连接 . 我没有任何线索为什么 . 如果您有任何疑问,请随时提出 .
使用docker本身构建docker-image也可以,但是没有连接到任何外部mongodb .
My question is:
我应该如何在Docker中连接MongoDB-Container和我的应用程序?
1 回答
而不是使用
localhost
使用为mongo服务mongo
提供的服务名称const url = 'mongodb://mongo:27017'
还要检查是否确实需要在主机上公开mongo端口 .