代码之家  ›  专栏  ›  技术社区  ›  Yuseferi

让其他容器访问mongo官方docker图像

  •  0
  • Yuseferi  · 技术社区  · 7 年前

    我有几个docker容器,其中一个是Mongodb官方图片,

    这是docker-compose.yml文件的一部分

    version: '3'
    services:
      mongo:
        image: mongo
        container_name: mongo01
    #    command: ["mongod", "-f", "/etc/mongo/mongod.conf"]
        volumes:
          - ./data/mongodata:/data/db
    #      - ./config/mongo:/etc/mongo
        restart: always
        ports:
          - "27017:27017"
    

    我可以从主机(我的系统)访问mongo服务,但是根据mongo新的安全策略,有一个配置,用于限制对mongo的访问 127.0.0.1 ,我知道,是

    # network interfaces
    
    net:
      port: 27017
      bindIp: 127.0.0.1
    

    如果我可以将mongo映像推到我的自定义配置中,我可以解决问题,但是我尝试了

    装入自定义配置文件 - ./config/mongo:/etc/mongo 然后和mongod一起 command: ["mongod", "-f", "/etc/mongo/mongod.conf"] 但没用。

    似乎mongod在容器中作为进程1启动并尝试使用自定义命令运行它不起作用,即使我尝试使用 mongod --shutdown 它关闭了整个容器(我想停止mongod,然后用 mongod --bind_ip_all )

    所以问题是我们如何更改mongo映像配置文件?

    2 回复  |  直到 7 年前
        1
  •  2
  •   Mazel Tov    7 年前

    蒙哥人 docker image 已经设置了入口点,基本上 mongod 所以在命令(CMD)中,可以向mongod添加额外的参数

    简单的docker运行

    docker run -d mongo --bind_ip_all
    

    或者用谱子

    version: '3'
    services:
      mongo:
        image: mongo
        command: ["--bind_ip_all"]
        ports:
          - "27017:27017"
    
        2
  •  0
  •   BMitch    7 年前

    mongo官方图片的入口点已经 contains a step to add --bind_ip_all 只要不显式绑定特定IP:

    # MongoDB 3.6+ defaults to localhost-only binding
    haveBindIp=
    if _mongod_hack_have_arg --bind_ip "$@" || _mongod_hack_have_arg --bind_ip_all "$@"; then
        haveBindIp=1
    elif _parse_config "$@" && jq --exit-status '.net.bindIp // .net.bindIpAll' "$jsonConfigFile" > /dev/null; then
        haveBindIp=1
    fi
    if [ -z "$haveBindIp" ]; then
        # so if no "--bind_ip" is specified, let's add "--bind_ip_all"
        set -- "$@" --bind_ip_all
    fi