mongodb - 带有 docker-compose 的 AdminMongo 不起作用

标签 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 监听主机: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

最佳答案

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

1st: 公开一个端口是不够的。 expose 只是文档,您需要publish(绑定(bind))一个端口到主机才能访问。这是如何完成的:

ports:
  - 1234:1234

第二:您必须配置 adminmongo 来监听 0.0.0.0 因为默认情况下它开始监听 127.0.0.1 这使得它只能在容器内部访问。来自documentation page你已经包含在你的问题中,Configuration 部分声明这可以通过传递环境变量来完成:

All above parameters are usable through the environment which makes it very handy to when using adminMongo as a docker container! just run 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

关于mongodb - 带有 docker-compose 的 AdminMongo 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54824984/

相关文章:

apache - Apache HTTP Server Docker镜像-需要在Dockerfile中进行更干净的配置

node.js - 如何在 Docker 中运行两个 Node.js 应用程序和 mysql

mysql - phpmyadmin 上的 docker compose 不正确

mongodb - 在mongo中查询键值映射

java - 在 Java 中使用 MongoDB 中的日期范围进行查询

mysql - 考虑从MySQL切换到Cassandra或MongoDB以获取临时元数据

node.js - 搜索创建日期大于 14 天前的用户,然后更新过期字段

powershell - 如何将文件(.txt格式)从计算机复制到Docker容器

Azure DevOps Pipeline - 构建 Docker 镜像并将其推送到具有受限网络访问权限的 Azure 容器注册表

docker - 在Docker服务规模上为环境变量动态分配不同的值