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 Beanstalk
和 Docker
来构建映像并将其部署在容器中。所以问题是,
-
这可能吗?
如果是,我如何确保 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 应用程序版本
Cloudformation 协助 Elastic Beanstalk 和 Application Load Balancer