【发布时间】:2014-12-19 14:48:55
【问题描述】:
正在研究使用 IronWorker 来运行一些常见服务,但是我想知道是否有一种方法可以在 worker 本身中知道它在什么环境下运行。例如,在我们的主代码库中,我们将服务器 var ENV 设置为等于“开发”、“暂存”或“生产”之一。基于这个变量,我们的应用程序知道要加载哪些配置文件(通过 dirs config/development、config/staging 和 config/production 中的配置文件)。我想为工人设置类似的设置。
我注意到,当我通过 cli 上传工作人员时,我可以执行以下操作:
iron_worker 上传workers/example/hello_world --env staging
这允许我拥有一个 Iron.json 配置文件,其中包含 dev、staging 和 production 密钥。例如,
{
"production": {
"token": "AAAAAAAAAAAAAAAAAAAAAAAAAAA",
"project_id": "000000000000000000000001"
},
"staging": {
"token": "BBBBBBBBBBBBBBBBBBBBBBBBBB",
"project_id": "000000000000000000000002"
},
"development": {
"token": "CCCCCCCCCCCCCCCCCCCCCCCCCC",
"project_id": "000000000000000000000003"
},
"test": {
"token": "DDDDDDDDDDDDDDDDDDDDDDDDDD",
"project_id": "000000000000000000000004"
}
}
但是,在 worker 本身中,我无法从 cli 访问 env var,因此当 worker 需要加载一些配置变量时,它不知道要查看哪个目录。
在http://dev.iron.io/worker/reference/dotworker/ 的文档中,他们表明您可以在 .worker 文件中设置一个环境变量,但这意味着我需要为每个环境创建一个单独的工作文件,并且(也许?)将它们换掉,具体取决于我要部署到哪个环境。
【问题讨论】:
标签: environment-variables ironworker