我正在尝试使用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
答案 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'