首页 > 解决方案 > 如何在 docker-compose 中运行具有不同端口的多个 MongoDB?

问题描述

我正在尝试在一个 docker-compose 中运行两个 MongoDB。由于我想在每个数据库中存储不同的数据,我需要通过不同的端口来区分它们。如果我运行以下 docker-compose,端口 27017 一切正常,但我无法访问端口 27018。在控制台中,两种服务的一切看起来都一样,只有端口 27018 上的服务缺少以下日志:

NETWORK [initandlisten] 等待端口 27017 上的连接(显示端口 27017)

当我尝试在浏览器中访问这两个服务时,端口 27017 上的一个可以工作,而 27018 上的一个不工作。

如果有人能帮我解决这个问题,我很高兴。工作了很长时间。谢谢!

这是我的代码:

version: "3"

services:
  mongo:
    image: mvertes/alpine-mongo:4.0.1-0
    volumes:
    - mongoDBvolume:/data/db
    ports:
    - "27017:27017"

   testmongo:
    image: mvertes/alpine-mongo:4.0.1-0
    command: mongod --port 27018
    volumes:
    - mongoDBvolume:/data/testdb
    ports:
    - "27018:27017"

volumes:
  mongoDBvolume:
    driver: local

标签: mongodbdockerdocker-composemultiple-instances

解决方案


只需删除 command: mongod --port 27018,因此它将位于容器内的端口 27017 上。

流程是这样的:

主机 27018 <--> docker bridge 27018:27017 <--> mongo 容器 27017


推荐阅读