mongodb – docker在另一个端口上运行mongo图像

简短的问题是我可以从mongo运行mongo:在27017以外的其他端口上运行最新图像(例如在27018上?)

如果是,我如何在docker-compose.yml文件中执行此操作,以便能够键入以下命令:

docker-compose run

更长的故事:

我有一个在AWS EC2实例中运行的应用程序.该应用程序包含一个mongodb和一个Web应用程序.现在我决定将这个应用程序的一部分分离到自己的微服务器中,这个微服务运行在docker容器中的同一个AWS中(两个容器一个用于另一个mongo,一个用于web应用程序).我认为问题是我不能在端口27017上运行mongodb,同时在端口27017上的docker容器内运行另一个mongodb.对吗?我有这个假设,因为当我停止第一个mongo(我的app 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运行时,它仍然无效,我收到以下错误:

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告诉listen on a different port,或者使用命令行参数:

services:
  mongo:
    image: 'mongo:latest'
    command: mongod --port 27018
    ports:
        - '27018:27018'

转载注明原文:mongodb – docker在另一个端口上运行mongo图像 - 代码日志