如何使用docker compose运行MongoDB和Mongo express?
我试图通过Docker compose运行MongoDB和Mongo express。我使用以下配置:如何使用docker compose运行MongoDB和Mongo express?,mongodb,docker-compose,Mongodb,Docker Compose,我试图通过Docker compose运行MongoDB和Mongo express。我使用以下配置: version: '3' services: mongo: image: mongo environment: - MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USER} - MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWOR
version: '3'
services:
mongo:
image: mongo
environment:
- MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USER}
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
- MONGO_INITDB_DATABASE=project
mongo-express:
image: mongo-express
environment:
- ME_CONFIG_MONGODB_SERVER=mongo
- ME_CONFIG_MONGODB_PORT=27017
- ME_CONFIG_MONGODB_ENABLE_ADMIN=false
- ME_CONFIG_MONGODB_AUTH_DATABASE=admin
- ME_CONFIG_MONGODB_AUTH_USERNAME=${MONGO_ROOT_USER}
- ME_CONFIG_MONGODB_AUTH_PASSWORD=${MONGO_ROOT_PASSWORD}
- ME_CONFIG_BASICAUTH_USERNAME=${MONGOEXPRESS_LOGIN}
- ME_CONFIG_BASICAUTH_PASSWORD=${MONGOEXPRESS_PASSWORD}
depends_on:
- mongo
ports:
- "8080:8081"
和.env文件:
MONGO_ROOT_USER=devroot
MONGO_ROOT_PASSWORD=devroot
MONGOEXPRESS_LOGIN=dev
MONGOEXPRESS_PASSWORD=dev
docker compose up
mongo服务运行后,mongo express失败。我在日志中看到错误:
mongo-express_1 | Welcome to mongo-express
mongo-express_1 | ------------------------
mongo-express_1 | Mongo Express server listening at http://0.0.0.0:8081
mongo-express_1 | Server is open to allow connections from anyone (0.0.0.0)
mongo-express_1 | Database connected
mongo-express_1 | Connecting to admin...
mongo-express_1 | TypeError: db is not a function
mongo-express_1 | at /node_modules/mongo-express/lib/db.js:114:53
mongo-express_1 | at Array.forEach (native)
我做错了什么?谢谢你的进步 像这样运行它对我来说很有用也许对你有帮助
mongoex:
image: mongo-express
environment:
- ME_CONFIG_OPTIONS_EDITORTHEME=ambiance
- ME_CONFIG_MONGODB_SERVER=database
- ME_CONFIG_MONGODB_PORT=27017
- ME_CONFIG_MONGODB_ENABLE_ADMIN=false
- ME_CONFIG_MONGODB_AUTH_DATABASE=admin
ports:
- "8081:8081"
links:
- database
database:
image: mongo:latest
command: --smallfiles
ports:
- "27017:27017"
祝你好运,并致以问候 它在我的mac电脑中工作。如果删除docker compose容器并重新生成,它可能会起作用。我添加了我的文件。只有我换了mongo express港口 环境署署长 docker-compose.yml
version: '3'
services:
mongo:
image: mongo
environment:
- MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USER}
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
- MONGO_INITDB_DATABASE=project
mongo-express:
image: mongo-express
environment:
- ME_CONFIG_MONGODB_SERVER=mongo
- ME_CONFIG_MONGODB_PORT=27017
- ME_CONFIG_MONGODB_ENABLE_ADMIN=false
- ME_CONFIG_MONGODB_AUTH_DATABASE=admin
- ME_CONFIG_MONGODB_AUTH_USERNAME=${MONGO_ROOT_USER}
- ME_CONFIG_MONGODB_AUTH_PASSWORD=${MONGO_ROOT_PASSWORD}
- ME_CONFIG_BASICAUTH_USERNAME=${MONGOEXPRESS_LOGIN}
- ME_CONFIG_BASICAUTH_PASSWORD=${MONGOEXPRESS_PASSWORD}
depends_on:
- mongo
ports:
- "8888:8081"
Docker版本
Client:
Version: 18.06.0-ce
API version: 1.38
Go version: go1.10.3
Git commit: 0ffa825
Built: Wed Jul 18 19:05:26 2018
OS/Arch: darwin/amd64
Experimental: false
Server:
Engine:
Version: 18.06.0-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: 0ffa825
Built: Wed Jul 18 19:13:46 2018
OS/Arch: linux/amd64
Experimental: true
最简单的方法是使用docker-compose.yml在目录中运行
docker compose up-d
:
version: "3"
services:
mongo:
image: "mongo:3-stretch"
mongo-express:
image: "mongo-express:latest"
ports:
- "8081:8081"
然后在浏览器中打开。这是非常有用的东西,但同时不稳定。你需要找到你自己的方法来编写
docker compose.yml
对我来说,这是一种类似的工作
version: '3'
services:
db:
image: mongo:2.6.12
container_name: app_db
volumes:
- store:/data/db
ports:
- "27017:27017"
mongo-express:
container_name: mongo-express
links:
- 'db:mongo'
ports:
- '8081:8081'
environment:
- 'ME_CONFIG_OPTIONS_EDITORTHEME=ambiance'
- 'ME_CONFIG_BASICAUTH_USERNAME=user'
- 'ME_CONFIG_BASICAUTH_PASSWORD=pass'
image: mongo-express
如果你仍然有这个问题。。。或者万一有人想弄明白为什么这一切都不管用,真是疯了 运行docker compose up--强制重新创建 没有完全重新创建容器(不知道为什么)-看起来确实如此,但当我在未经授权的情况下进入数据库时,我发现它没有重新创建容器的数据(数据库!),一小时前创建的集合仍然存在 我已经运行了上面的命令,还运行了“docker image rm mongo”,并删除了mongo express(不需要) 问题是我必须做一个“docker容器列表”来查看我拥有的两个容器(一个用于Mongo本身,另一个用于Mongo with Mongo express-不确定我需要删除哪个,但我将它们都删除了…) 一旦我这样做了,并且“启动”了您的配置,从.env文件中提取值工作得很好-它完成了INITDB。。。并在数据库中正确设置管理员密码 因此,如果您曾经使用任何配置创建它来测试它,您将拥有一个容器,它正在为其重用数据(我认为它不会重新创建该容器以避免数据丢失-我的意思是,99.9%的时间您只想重新创建程序部分,而不是数据-否则您将丢失数据库)
花了几个小时才弄明白这一点…Mongo express更改了用户并传递了ENV关键字: 旧的: 新的: 参考:
在mongo express的新版本中进行了一些更新,可接受的解决方案不再有效,尤其是您需要修复此问题
TypeError: Cannot read property 'listDatabases' of undefined
提示
请记住,如果调整设置,请使用选项--force recreate
重新启动设置
docker-compose up --force-recreate -d
这是我目前使用的docker-compose.yml
version: '3'
services:
mongo:
image: mongo:${MONGO_TAG}
environment:
- MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USER}
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
- MONGO_INITDB_DATABASE=project
mongo-express:
image: mongo-express
environment:
- ME_CONFIG_MONGODB_SERVER=mongo
- ME_CONFIG_MONGODB_PORT=27017
- ME_CONFIG_MONGODB_ENABLE_ADMIN=true
- ME_CONFIG_MONGODB_AUTH_DATABASE=admin
- ME_CONFIG_MONGODB_ADMINUSERNAME=${MONGO_ROOT_USER}
- ME_CONFIG_MONGODB_ADMINPASSWORD=${MONGO_ROOT_PASSWORD}
- ME_CONFIG_BASICAUTH_USERNAME=${MONGOEXPRESS_LOGIN}
- ME_CONFIG_BASICAUTH_PASSWORD=${MONGOEXPRESS_PASSWORD}
links:
- mongo
ports:
- "8081:8081"
虽然这篇文章有点旧。我想与大家分享为我工作的docker-compose.yml 下面是一个mongoDB实例和MongoExpress
version: '3.7'
services:
mongo_db:
image: mongo:4.2.12
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: rootpassword
ports:
- 27017:27017
volumes:
- /C/Mine/mongoData:/data/db
mongo_express:
image: mongo-express:0.54.0
environment:
- ME_CONFIG_OPTIONS_EDITORTHEME=default
- ME_CONFIG_MONGODB_SERVER=mongo_db
- ME_CONFIG_MONGODB_PORT=27017
- ME_CONFIG_MONGODB_ENABLE_ADMIN=true
- ME_CONFIG_MONGODB_AUTH_DATABASE=mydb
- ME_CONFIG_MONGODB_ADMINUSERNAME=root
- ME_CONFIG_MONGODB_ADMINPASSWORD=rootpassword
ports:
- "8081:8081"
restart: on-failure
depends_on:
- mongo_db
当数据库使用卷配置,但mongodb和MongoExpress不共享网络配置时,就会出现此问题。 这对我来说非常有效:
版本:“3.7”
服务:
db:
容器名称:mongo dev
图片:mongo:4.2
环境:
-MONGO_INITDB_ROOT_USERNAME=admin
-MONGO_INITDB_数据库=auth
-MONGO_INITDB_ROOT_PASSWORD=pass
网络:
-mongo合成网络
端口:
- '27017:27017'
卷数:
-/数据:/data/db
mongo express:
集装箱名称:mongo express
图片:mongo express
取决于:
-分贝
网络:
-mongo合成网络
环境:
-ME\u CONFIG\u MONGODB\u SERVER=mongo dev
-ME\u CONFIG\u MONGODB\u ADMINUSERNAME=admin
-ME\u CONFIG\u MONGODB\u ADMINPASSWORD=pass
-ME\u CONFIG\u BASICAUTH\u USERNAME=admin
-ME\u CONFIG\u BASICAUTH\u PASSWORD=部落
端口:
- '8081:8081'
卷数:
-/数据:/data/db
网络:
mongo compose网络:
司机:驾驶台
我还想指出,对于那些答案基本上是“关闭auth”的人来说,它很好用!这并没有回答OP的问题。我在mongo服务(容器)中添加了端口:and-27017:27017,我可以通过RoboMongo(现在是T3)很好地连接到它,但是mongo Express部分与管理员的连接很好,但是当你登录时会抛出一个Auth错误。无论如何,这张图片看起来不值得用在任何事情上。他们有一个身份验证,但无法注销,而且似乎不起作用。我真的不知道为什么人们会用它来代替运行mongo和real-too。无论如何,我希望这能帮助一些人。它现在不起作用,错误是TypeError:cannotread未定义的属性'listDatabases'
docker-compose up --force-recreate -d
version: '3'
services:
mongo:
image: mongo:${MONGO_TAG}
environment:
- MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USER}
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
- MONGO_INITDB_DATABASE=project
mongo-express:
image: mongo-express
environment:
- ME_CONFIG_MONGODB_SERVER=mongo
- ME_CONFIG_MONGODB_PORT=27017
- ME_CONFIG_MONGODB_ENABLE_ADMIN=true
- ME_CONFIG_MONGODB_AUTH_DATABASE=admin
- ME_CONFIG_MONGODB_ADMINUSERNAME=${MONGO_ROOT_USER}
- ME_CONFIG_MONGODB_ADMINPASSWORD=${MONGO_ROOT_PASSWORD}
- ME_CONFIG_BASICAUTH_USERNAME=${MONGOEXPRESS_LOGIN}
- ME_CONFIG_BASICAUTH_PASSWORD=${MONGOEXPRESS_PASSWORD}
links:
- mongo
ports:
- "8081:8081"
version: '3.7'
services:
mongo_db:
image: mongo:4.2.12
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: rootpassword
ports:
- 27017:27017
volumes:
- /C/Mine/mongoData:/data/db
mongo_express:
image: mongo-express:0.54.0
environment:
- ME_CONFIG_OPTIONS_EDITORTHEME=default
- ME_CONFIG_MONGODB_SERVER=mongo_db
- ME_CONFIG_MONGODB_PORT=27017
- ME_CONFIG_MONGODB_ENABLE_ADMIN=true
- ME_CONFIG_MONGODB_AUTH_DATABASE=mydb
- ME_CONFIG_MONGODB_ADMINUSERNAME=root
- ME_CONFIG_MONGODB_ADMINPASSWORD=rootpassword
ports:
- "8081:8081"
restart: on-failure
depends_on:
- mongo_db