如何使用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

我试图通过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_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