是否可以将环境变量添加到MongoDB配置文件?
我正在使用YAML语法配置MongoDB副本集。但是,我想使用MONGODB_HOME环境变量来指向数据库:是否可以将环境变量添加到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
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开发版本开始,新的指令就可以进行测试了,但是一些使用文档仍在进行中。听起来不错。我不久前离开了那个项目,但会将答案标记为正确的:)