docker-compose mongodb访问/docker-entrypoint-initdb.d/脚本中的env变量

时间:2018-06-18 19:20:22

标签: mongodb docker

此问题基于a previous question on the same topic

的最佳答案

我的问题是,在我的自定义/docker-entrypoint-initdb.d/ init脚本中,如何引用在docker-compose的.env文件中声明的env变量?含义,除了MONGO_INITDB_ROOT_USERNAME和MONGO_INITDB_ROOT_PASSWORD之外的env变量。

例如:

mongo --eval "db.getSiblingDB('sibling').createUser({user: '$SIBLING_USER', pwd: '$SIBLING_PASSWORD', roles: [{ role: 'readWrite', db: 'sibling' }]})"

1 个答案:

答案 0 :(得分:0)

我使用NGINX为反向代理做了以下操作,其中基于env变量加载了不同的配置文件。

多克尔-compose.yml:

https-proxy:
build: 
  context: ./https-proxy
  dockerfile: ./Dockerfile
  args:
    - MY_VAR=TRUE

Dockerfile:

FROM nginx

ARG MY_VAR
ENV MY_VAR=${MY_VAR}
RUN bash ./etc/nginx/config.sh

config.sh:

#!/bin/bash
if [ $MY_VAR == true ]; then
    echo 'My Var is True'
else
   echo 'My Var is False'

您还可以在Docker-compose.yml之外定义一个.env文件,这样您就不必更改该文件,只在Docker-compose寻找的其他地方定义值