【问题标题】:how to add --auth for mongodb image when using docker-compose?使用docker-compose时如何为mongodb图像添加--auth?
【发布时间】:2017-03-30 15:16:56
【问题描述】:

我正在使用 docker-compose 运行由 node、mongodb、nginx 创建的项目;

我已经使用 docker build 构建了项目

然后我使用docker up -d nginx 开始我的项目。但是我还没有找到使用'--auth'运行mongodb图像的配置,那么如何在compose启动mongodb时添加'--auth'?

这是我的 docker-compose.yml:

version: "2"
services:
  mongodb:
    image: mongo:latest
    expose:
        - "27017"
    volumes:
        - "/home/open/mymongo:/data/db"
  nginx:
    build: /home/open/mynginx/
    ports:
        - "8080:8080"
        - "80:80"
    links:
        - node_server:node
  node_server:
    build: /home/laoqiren/workspace/isomorphic-redux-CNode/ 
    links:
        - mongodb:mongo
    expose:
        - "3000"

【问题讨论】:

  • 为什么要先暴露MongoDB的端口?
  • @MarkusWMahlberg 它看起来像是 v1 compose 文件的后遗症。暴露一个端口而不从 docker 主机映射它使其可用于其他容器。从 v2 开始,它并没有做太多事情,其中​​ compose 创建了一个独立的 docker 网络,该网络在该网络上的容器之间具有开放的通信

标签: node.js mongodb nginx docker docker-compose


【解决方案1】:

向容器提供command,包括--auth 选项。

  mongodb:
    image: mongo:latest
    expose:
        - "27017"
    volumes:
        - "/home/open/mymongo:/data/db"
    command: mongod --auth

最新的 mongo 容器也带有 "root" auth initialisation via environment variables,以 postgres 设置为蓝本。

【讨论】:

  • 谢谢,但为什么只设置命令为 --auth 就可以了?我已经阅读了 mongodb 图像的 dockerfile,我不明白为什么它的 CMD 是 ['mongod'] 并且它的入口点是 docker-entrypoint.sh,但是我可以通过 'docker run mongo --auth' 运行图像,因为--auth 将替换 mongod CMD,所以它将是 '--auth' 而不是 'mongod --auth',为什么它可以运行?
  • 当没有提供任何内容以及提供以- 开头的参数时,图像默认运行mongod。否则它将运行您提供的命令。
  • 但是文档说如果ENTRYPOINT和CMD都提供了,CMD中的值将是ENTRYPOINT的默认参数,那么为什么--auth不会替换mongod而是添加到CMD中呢? --auth 也是一个参数。
  • 我不确定您指的是哪个文件,但我相信 this is the code in the entrypoint 会造成混淆。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-22
  • 2018-05-16
  • 2021-08-19
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多