【问题标题】:Setting type of environment for an ironworker为铁工设置环境类型
【发布时间】: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


    【解决方案1】:

    有一些棘手的方法:

    1) 铁.json。与描述的格式相同,没有变化

    2) .worker 文件。将环境从本地系统传递到 IronWorker 环境。将此行添加到 .worker 文件中:

    set_env 'IRON_ENV', ENV['IRON_ENV']
    

    3) 上传代码命令。而不是

    iron_worker upload workers/example/hello_world --env staging
    

    使用不同的语法:

    IRON_ENV=staging iron_worker upload workers/example/hello_world
    

    4) 检查 Worker 端的环境(当然支持任何语言选择):

    puts ENV['IRON_ENV']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-02
      • 2021-03-03
      • 2016-05-19
      • 1970-01-01
      • 2019-04-13
      • 2011-02-09
      • 1970-01-01
      • 2021-08-13
      相关资源
      最近更新 更多