Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以将环境变量添加到MongoDB配置文件?_Mongodb_Environment Variables_Yaml - Fatal编程技术网

是否可以将环境变量添加到MongoDB配置文件?

是否可以将环境变量添加到MongoDB配置文件?,mongodb,environment-variables,yaml,Mongodb,Environment Variables,Yaml,我正在使用YAML语法配置MongoDB副本集。但是,我想使用MONGODB_HOME环境变量来指向数据库: storage: dbPath: "ENV['MONGODB_HOME']/data/db" 我尝试过使用%、$等,但没有成功。有可能吗 以防万一,我在Windows7 64位下工作 最好的祝愿MongoDB配置文件(3.0版)只允许静态配置值 如果要传递动态值,可以通过命令行或PowerShell脚本调用,例如: mongod.exe --dbpath %HOME%\data\d

我正在使用YAML语法配置MongoDB副本集。但是,我想使用MONGODB_HOME环境变量来指向数据库:

storage:
  dbPath: "ENV['MONGODB_HOME']/data/db"
我尝试过使用%、$等,但没有成功。有可能吗

以防万一,我在Windows7 64位下工作

最好的祝愿

MongoDB配置文件(3.0版)只允许静态配置值

如果要传递动态值,可以通过命令行或PowerShell脚本调用,例如:

mongod.exe --dbpath %HOME%\data\db

如果您计划启动多个MongoDB服务器实例(例如,针对不同的用户),您还需要指定要侦听的唯一的
--端口号。

volumes:
  - mongo:/data/db
作为docker-compose.yml的一部分,这意味着我不必使用--dbpath CL开关。

灵感来源于

使用这样的mongod.conf:

systemLog:
  destination: file
  path: /mongo/db/mongodb.log
  logAppend: true
storage:
  dbPath: /mongo/db
net:
  bindIp: 127.0.0.1
  port: {PORT}
然后在Dockerfile中:

FROM mongo
COPY mongod.conf /mongo/mongod.conf
CMD sed -e "s/{PORT}/$PORT/g" < /mongo/mongod.conf 1> /mongo/mongod.conf && mongod -f /mongo/mongod.conf
来自mongo的

复制mongod.conf/mongo/mongod.conf
CMD sed-e“s/{PORT}/$PORT/g”/mongo/mongod.conf&&mongod-f/mongo/mongod.conf

将命令行选项
--configExpand exec
添加到
mongod
命令中

然后,可以使用
\uu exec:
和展开环境变量 猛击。下面是我使用此方法的mongod.conf文件中的几行代码

processManagement:
  fork: true
  pidFilePath: 
    __exec: "bash -c 'echo -n $XDG_RUNTIME_DIR/mongodb/mongod.pid'"
    type: string
计算机上的Mongodb版本是4.4.5

[user@laptop ~]$ mongod --version | grep version | tail -1
    "version": "4.4.5",
[user@laptop ~]$ 

更新:计算机正在运行Linux。我刚刚意识到问题是关于Windows7的。也许在Windows7上也可以做类似的事情。我想你需要用别的东西来取代bash。

最近几年有什么变化吗?也就是说,现在是否可以使用变量或not@asgs截至MongoDB 4.0,MongoDB的生产版本中没有适用的变更。然而,最近4.1开发系列中出现了一些改进(最终将发布4.2产品版)。MongoDB 4.2将支持使用
\uuuuExec
\uuuuRest
扩展指令。从4.1.4开发版本开始,新的指令就可以进行测试了,但是一些使用文档仍在进行中。听起来不错。我不久前离开了那个项目,但会将答案标记为正确的:)