mongodb - ubuntu docker 容器与 windows 本地主机上运行的 mongdb 连接
问题描述
我提取了 ubuntu 映像并在我的 Windows 上运行容器。我想将我在 Windows 上本地运行的 MongoDB 与 ubuntu 容器连接起来。实现这一目标的最佳做法是什么?
解决方案
你可以使用docker-compose 网络
默认情况下,Compose 会为您的应用程序设置一个网络。服务的每个容器都加入默认网络,并且可以被该网络上的其他容器访问,并且可以通过与容器名称相同的主机名被它们发现。
例如,让我们使用带有 MongoDB 的 Node 应用程序。
你的 docker-compose 文件Docker compose.yaml
version: "3"
services:
app:
image: myapp:latest # your app docker image
depends_on:
- db
ports:
- 80:80
networks:
- network
environment:
- MONGO_URL=mongodb://db:27017 #MongoUrl you can use in your app to connect
db:
image: mongo:latest
volumes:
- /data/db:/data/db
ports:
- 27017:27017
networks:
- network
networks:
network:
driver: bridge
您可以连接 Node 中的环境变量,如下所示
import mongoose from "mongoose"
const mongodbUrl = process.env.MONGO_URL
const mongoConnectionOptions = {
useNewUrlParser: true,
useUnifiedTopology: true,
poolSize: 10,
bufferMaxEntries: 0
}
mongoose
.connect(mongodbUrl, mongoConnectionOptions)
.then(async (db) => {
console.log(`Mongo db ${db.version} is connected`)
})
.catch((err) => {
console.log("MongoDB connection error. Please make sure MongoDB is running. " + err)
})
然后使用docker-compose up
启动这2个服务
推荐阅读
- r - 在箱线图中订购 ggplot
- c# - 如何在属性更改时启用 WPF DataGrid 验证复杂对象的集合?
- rust - 如何使用 main.rs 中其他模块中声明的结构?
- javascript - 为 scollTop 赋值时滚动条不响应(仅限移动设备)
- amazon-web-services - 带有 lambda 的 AWS Cron 作业
- python - 网页抓取后从名称中删除链接字符
- for-loop - 为什么内核宏for_each_cpu循环从cpu = -1 for smp?
- c# - 组合两个 SQL 查询 - ASP.NET
- javascript - 如何正确测试依赖于 useState 和 jest/enzyme 的受控输入组件
- html - 如何使用允许一些字符串的模式属性