Docker主机的弹性Beanstalk环境变量 [英] Elastic Beanstalk environment variables for Docker host

查看:249
本文介绍了Docker主机的弹性Beanstalk环境变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个适用于Docker网络应用程序(rails)的EB环境。我设置了几个EB env变量,它们在容器中正确显示。现在 - 我希望这些EB env变量对EC2实例主机可见,以便我可以在docker构建过程中使用它们。但是,它们不会暴露给Docker主机,而是仅向容器暴露。

如何将EB env变量公开到Docker主机?

解决方案

这是一个,所以我发布我的解决方案为那些遇到这个。

弹性Beanstalk Docker实例不公开环境变量到docker主机。它只对docker容器执行。

如果要在主机上获取env变量,它们位于 / opt / elasticbeanstalk / deploy / configuration / containerconfiguration

这是一个大的JSON文件,方便不遵守env vars的JSON结构。

我写了一个小ruby脚本解析它,并从中提取env vars:

  require'json'
container_config = JSON.parse (File.read('/ opt / elasticbeanstalk / deploy / configuration / containerconfiguration'))
raw_vars = container_config ['optionsettings'] ['aws:elasticbeanstalk:application:environment']
envs =''
raw_vars.each do | raw_var |
pair = raw_var.split('=')
envs<<< export#{pair [0]} =#{pair [1]} \\\
if pair [1]
end
puts envs
pre>

此脚本产生一组导出命令到控制台,以设置env vars。我修改了一下,将 ENV 命令写入我的 Dockerfile


I have an EB env with Docker web app (rails) properly deployed. I set several EB env variables and they are properly visible in the container. Now - I'd like these EB env variables to be visible to the EC2 instance host, so that I can use them in the docker build process. However, they are not exposed to the docker host, only to the container.
How do I expose EB env variables to the Docker host?

解决方案

This was a though one, so I'm posting my solution for those who encounter this.
Elastic Beanstalk Docker instance does not expose the environment variables to the docker host. It does that only to the docker container.
If you'd like to get the env variables on the host, they are located at /opt/elasticbeanstalk/deploy/configuration/containerconfiguration.
This is one large JSON file, conveniently disobeying the JSON structure for the env vars.
I wrote a small ruby script to parse it and extract the env vars from it:

require 'json'
container_config = JSON.parse(File.read('/opt/elasticbeanstalk/deploy/configuration/containerconfiguration'))
raw_vars =  container_config['optionsettings']['aws:elasticbeanstalk:application:environment']
envs = ''
raw_vars.each do |raw_var|
  pair = raw_var.split('=')
  envs << "export #{pair[0]}=#{pair[1]}\n" if pair[1]
end
puts envs

this script yields a set of export commands to console that sets the env vars. I adapted it a bit to write ENV commands into my Dockerfile.

这篇关于Docker主机的弹性Beanstalk环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆