所以我一直在寻找一个如何从AWS EB web界面为我的Docker容器指定环境变量的示例。通常在EB中,您可以添加运行时可用的环境属性。在我切换到Docker之前,我正在将这些用于我以前的部署,但看起来好像Docker在如何处理环境属性方面有一些不同的规则,这是正确的吗?根据本文[1],只有AWS凭证和PARAM1-PARAM5将出现在环境变量中,但不会出现自定义属性。这就是我听起来的样子,特别是考虑到支持自定义环境属性的容器明确表示,就像这里显示的Python一样[2]。有没有人对这个软件组合有任何经验?我需要指定的是一个单独的环境变量,它告诉我应用程序是处于“暂存”还是“生产”模式,然后我的所有环境特定配置都由应用程序本身设置。
[1] http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options.html#command-options-docker
[2] http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options.html#command-options-python
答案 0 :(得分:11)
AWS Elastic Beanstalk Docker容器支持自定义环境变量。看起来像是文档中的错过。您可以为您的环境定义自定义环境变量,并期望它们将传递到docker容器。
答案 1 :(得分:1)
在解决此方案的步骤下面:
option_settings:
-option_name: VARIABLE_NAME
value: VARIABLE_VALUE
要查看结果,请在EC2实例中执行命令“docker inspect CONTAINER_ID”并查看环境变量。
答案 2 :(得分:0)
我不认为文档是Rohit Banga's answer建议的错过。我认为我同意“您可以为您的环境定义自定义环境变量,并期望它们将被传递到docker容器”。
Docker container portion of the docs说,“ No DOCKER-SPECIFIC配置选项由Elastic Beanstalk提供”......这并不一定意味着没有环境变量传递给Docker容器
例如,始终传递的for the Ruby container the Ruby-specific variables是...... RAILS_SKIP_MIGRATIONS,RAILS_SKIP_ASSET_COMPILATION,BUNDLE_WITHOUT,RACK_ENV,RAILS_ENV。等等。对于Ruby容器,假设您正在运行Ruby应用程序,因此设置一些合理的默认值以确保它们始终可用。
另一方面,对于Docker容器,它似乎是打开的。你指定你想要的任何变量......他们不会假设你正在运行什么,Rails(Ruby),Django(Python)等......因为它可以是任何东西。他们不知道你想要运行什么,这使得设置合理的默认值变得困难。