带有docker-compose的AdminMongo无法正常工作

时间:2019-02-22 10:25:38

标签: 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

当我执行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

3 个答案:

答案 0 :(得分:2)

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

第一:仅暴露端口是不够的。 expose只是文档,您需要publish(绑定)与主机的端口以可访问。就是这样的:

ports:
  - 1234:1234

第二:,您必须配置adminmongo来收听0.0.0.0,因为默认情况下,它开始在127.0.0.1上进行监听,这使其只能在容器内访问本身。根据您提出的问题documentation page配置部分指出,可以通过传递环境变量来完成此操作:

  

以上所有参数均可在环境中使用,这在将adminMongo用作Docker容器时非常方便!只需运行docker run -e HOST=yourchoice -e PORT=1234 ...

由于您使用的是docker-compose,因此可通过以下操作完成:

environment:
  - HOST=0.0.0.0

工作示例:

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

答案 1 :(得分:0)

您必须像这样将您的服务向外界公开:

version: '3'
services:
  mongo:
    image: mongo
    volumes:
      - ~/data:/data/db
    restart: always
  adminmongo:
    image: mrvautin/adminmongo
    ports:
      - 1234:1234

现在您可以通过http://localhost:1234访问您的adminmongo。

而且您不必在这里使用链接。因为compose创建了一个网络,并将所有服务加入了compose文件中。您可以使用其服务名称访问其他容器。

答案 2 :(得分:0)

docker-compose工作示例:

version: '3'

services:
  server:
    container_name: docker_api_web_container
    image: docker_api_web
    build: .
    volumes:
      - ./src:/usr/src/node-app/src
      - ./package.json:/usr/src/node-app/package.json
    environment:
     - ENV=DEVELOPMENT
     - PORT=4010
    ports:
      - '9000:4010'
    depends_on:
      - 'mongo'

  mongo:
    container_name: docker_mongo_container
    image: 'mongo'
    ports:
      - '27017:27017'

  adminmongo:
    container_name: docker_adminmongo_container
    image: mrvautin/adminmongo
    links: ['mongo:mongo']
    environment:
      - HOST=0.0.0.0
    ports:
      - '1234:1234'