在docker容器中获取弹性beanstalk环境变量

时间:2017-02-26 01:09:32

标签: amazon-web-services docker elastic-beanstalk

所以,我试图不在dockerfile上放置敏感信息。逻辑方法是将ebs配置(GUI)中的信用作为ENV变量。但是,docker build似乎无法访问ENV变量。有什么想法吗?

enter image description here

FROM jupyter/scipy-notebook

USER root

ARG AWS_ACCESS_KEY_ID
RUN echo {$AWS_ACCESS_KEY_ID}

2 个答案:

答案 0 :(得分:0)

放置敏感信息(供Dockerfile使用)可以是允许运行图像的特定步骤(构建时间),也可以是生成的图像在运行时仍保留该秘密。
对于运行时,如果您可以在群集模式配置中使用最新的docker 1.13,则可以manage secrets that way

但第一种情况(构建时间)通常用于将凭据传递给http_proxy,这可以通过--build-arg完成:

 docker build --build-arg HTTP_PROXY=http://...
  

此标志允许您在Dockerfile的RUN指令中传递像常规环境变量一样访问的构建时变量。
  此外,这些值不会像ENV值那样持续存在于中间或最终图像中。

在这种情况下,您不会使用ENVbut ARG

ARG <name>[=<default value>]
  

ARG指令定义了一个变量,用户可以使用--build-arg <varname>=<value>标志使用docker build命令在构建时将其传递给构建器

答案 1 :(得分:0)

我假设您为每个部署创建一个新的Dockerrun.aws.json文件,其中包含该部署的正确docker image标记。在部署阶段,您可以注入环境值,然后由EB代理在docker run命令中使用这些值。因此,您的docker容器现在可以访问这些环境变量。