我正在尝试使用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
我在这里发现了两个问题:
第一:公开端口是不够的。expose
只是文档,您需要publish
(绑定)一个端口到主机才能访问。这是它的完成方式:
ports:
- 1234:1234
第二:你必须配置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
工作示例:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句