【发布时间】:2017-07-30 23:58:32
【问题描述】:
简短的问题是我可以从 mongo 运行 mongo:latest image 在与 27017 不同的端口上(例如在 27018 上吗?)
如果是,我如何在 docker-compose.yml 文件中执行此操作,以便能够键入以下命令:
docker-compose run
更长的故事:
我有一个在 AWS EC2 实例中运行的应用程序。该应用程序由一个 mongodb 和一个 Web 应用程序组成。现在我决定将这个应用程序的一部分分离到它自己的微服务中,在 docker 容器内的同一个 AWS 中运行(两个容器一个用于另一个 mongo,一个用于 Web 应用程序)。我认为问题是我不能让 mongodb 在端口 27017 上运行,同时另一个 mongodb 在端口 27017 上的 docker 容器内运行。对吗?我有这个假设是因为当我停止第一个 mongo(我的应用程序 mongo)时,我的 docker mongo 工作。
所以我正在尝试制作第二个 mongo(位于 docker 容器中的那个),在不同的端口和我的第二个 Web 应用程序(另一个 docker conianter 中的那个)中运行,在不同的端口上收听 mongo港口。这是我更改 docker-compose 文件的尝试:
version: '2'
services:
webapp:
image: myimage
ports:
- 3000:3000
mongo:
image: mongo:latest
ports:
- 27018:27018
在我的新应用程序中,我将 mongo url 更改为:
monog_url = 'mongodb://mongo:27018'
client = MongoClient(monog_url, 27018)
好吧,如果我说:
monog_url = 'mongodb://mongo:27018'
client = MongoClient(monog_url)
但是当我运行 docker-compose run 时,它仍然不起作用,并且出现以下错误:
ERROR: for mongo driver failed programming external
connectivity on endpoint: Error starting userland proxy:
listen tcp 0.0.0.0:27017: bind: address already in use
或者
pymongo.errors.ServerSelectionTimeoutError:
mongo:27018: [Errno -2] Name or service not known
【问题讨论】:
标签: mongodb amazon-web-services docker amazon-ec2 docker-compose