带有 docker-compose 的 AdminMongo 不起作用

Cra*_*zit 3 mongodb docker docker-compose

我正在尝试使用adminmongo访问docker上的 mongo 数据库。

这是我的 docker-compose.yml

version: '3'
services:
  mongo:
    image: mongo
    volumes:
      - ~/data:/data/db
    restart: always
    expose:
      - 6016
  adminmongo:
    image: mrvautin/adminmongo
    expose:
      - 1234
    links:
      - mongo:mongo
Run Code Online (Sandbox Code Playgroud)

当我做一个docker-compose up一切正常时,adminmongo 也返回给我这个:adminmongo_1_544d9a6f954c | adminMongo listening on host: http://localhost:1234

但是当我去localhost:1234我的导航器时告诉我这个页面不存在。

这是我的docker ps回报:

$ docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                 NAMES
9c27d4a89254        mrvautin/adminmongo   "/bin/sh -c 'node ap…"   38 seconds ago      Up 33 seconds       1234/tcp              iris_adminmongo_1_544d9a6f954c
2a7496a8c56a        mongo                 "docker-entrypoint.s…"   40 minutes ago      Up 38 seconds       6016/tcp, 27017/tcp   iris_mongo_1_7f00356a3adc

Run Code Online (Sandbox Code Playgroud)

tgo*_*gos 8

我在这里发现了两个问题:

第一:公开端口是不够的。expose只是文档,您需要publish(绑定)一个端口到主机才能访问。这是它的完成方式:

ports:
  - 1234:1234
Run Code Online (Sandbox Code Playgroud)

第二:你必须配置adminmongo监听,0.0.0.0因为默认情况下它开始监听127.0.0.1,这使得它只能在容器内部访问。从您在问题中包含的文档页面中,配置部分指出这可以通过传递环境变量来完成:

以上所有参数都可以通过环境使用,这使得在使用 adminMongo 作为 docker 容器时非常方便!赶紧跑docker run -e HOST=yourchoice -e PORT=1234 ...

由于您正在使用docker-compose,这是通过以下方式完成的:

environment:
  - HOST=0.0.0.0
Run Code Online (Sandbox Code Playgroud)

工作示例:

version: '3'
services:
  mongo:
    image: mongo
    volumes:
      - ~/data:/data/db
    restart: always
    expose:
      - 6016
  adminmongo:
    image: mrvautin/adminmongo
    ports:
      - 1234:1234
    environment:
      - HOST=0.0.0.0
Run Code Online (Sandbox Code Playgroud)