Elastic Beanstalk 和 Dockerfile ARG 指令

Posted

技术标签:

【中文标题】Elastic Beanstalk 和 Dockerfile ARG 指令【英文标题】:Elastic Beanstalk and Dockerfile ARG instruction 【发布时间】:2017-02-03 12:21:59 【问题描述】:

我需要将一些参数传递给我的docker build 命令。我知道这可以使用Dockerfile 中的ARG 指令来完成。现在假设我的Dockerfile 中有以下内容。

ARG myvar

并使用命令docker build --build-arg mvar=myOwnVar ...,这样就可以了。

但是,我使用 AWS Elastic BeanstalkDocker 来构建映像并将其部署在容器中。所以问题是,

    这可能吗? 如果是,我如何确保 AWS EB 将值传递给这些参数?

谢谢 寿司

【问题讨论】:

哇,自从 16 年以来,仍然没有答案,我也有同样的困境。我已经为此浪费了一整天 AWS 开发者论坛上似乎有一个相关主题 - forums.aws.amazon.com/thread.jspa?threadID=230165 。到今天为止,似乎没有这样的功能。 【参考方案1】:

昨天我开始使用 AWS EB,我很高兴,今天我需要将一些 ARG 传递给我的构建,在文档上找到了这个

很伤心

来源:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-specific.html

解决方法

一个可能的解决方案是我目前正在做的事情,在运行 docker build 之前,将一些文件添加到 EB 并从 Dockerfile 中使用它

例如,假设我的 docker 上需要一个 var 名称 TOKEN 类似

RUN curl http://somemething.com?token=$TOKEN

所以我做了什么

添加一个新的脚本文件

ADD ./curl-thing.sh /curl-thing.sh

和内容

if [ -f "./.env"]; then
  source ./.env
fi

现在添加一个文件名.ebextensions/my-env.config,名称无关紧要,存在于forlder .ebextensions 并具有扩展名.config

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/pre/02_mix_environment.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      EB_APP_DEPLOY_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_deploy_dir)
      TOKEN=$(/opt/elasticbeanstalk/bin/get-config environment -k TOKEN)
      echo "export TOKEN=$TOKEN" >> $EB_APP_DEPLOY_DIR/.env

【讨论】:

以上是关于Elastic Beanstalk 和 Dockerfile ARG 指令的主要内容,如果未能解决你的问题,请参考以下文章

Elastic Beanstalk、Docker 和持续集成

Amazon Elastic BeanStalk 错误:无法创建 AWS Elastic Beanstalk 应用程序版本

Elastic Beanstalk 防止文件覆盖

停止和启动 Elastic Beanstalk 服务

Cloudformation 协助 Elastic Beanstalk 和 Application Load Balancer

Elastic Beanstalk 和 Dockerfile ARG 指令