首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AdminMongo与码头-组合不工作

AdminMongo与码头-组合不工作
EN

Stack Overflow用户
提问于 2019-02-22 10:25:38
回答 3查看 2.3K关注 0票数 4

我正试图用行政芒果访问码头上的mongo数据库。

这是我的docker-compose.yml

代码语言:javascript
运行
复制
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返回我的内容:

代码语言:javascript
运行
复制
$ 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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-22 11:01:30

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

1:仅公开一个端口是不够的。expose只是文档,您需要将一个端口绑定到主机才能到达。这是怎么做到的:

代码语言:javascript
运行
复制
ports:
  - 1234:1234

2:,您必须配置adminmongo来侦听0.0.0.0,因为默认情况下,它开始侦听127.0.0.1,这使得它只能在容器本身内访问。从问题中包含的Configuration部分中可以看出,可以通过传递一个环境变量来实现这一点:

所有这些参数都可以在环境中使用,这使得使用adminMongo作为码头容器非常方便!只需运行docker run -e HOST=yourchoice -e PORT=1234 ...

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

代码语言:javascript
运行
复制
environment:
  - HOST=0.0.0.0

工作示例:

代码语言:javascript
运行
复制
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
票数 9
EN

Stack Overflow用户

发布于 2020-05-03 11:28:01

船坞-撰写作品示例:

代码语言:javascript
运行
复制
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'
票数 1
EN

Stack Overflow用户

发布于 2019-02-22 10:47:25

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

代码语言:javascript
运行
复制
version: '3'
services:
  mongo:
    image: mongo
    volumes:
      - ~/data:/data/db
    restart: always
  adminmongo:
    image: mrvautin/adminmongo
    ports:
      - 1234:1234

现在,您可以通过http://localhost:1234访问您的管理员。

您也不必使用链接here.Since compose创建一个网络,并将所有服务连接到复合文件中。您可以使用其他容器的服务名称访问它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54824984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档