我需要将一些参数传递给我的docker build
命令。我知道可以使用ARG
中的Dockerfile
指令完成此操作。现在假设我的Dockerfile
中有以下内容。
ARG myvar
并使用命令docker build --build-arg mvar=myOwnVar ...
,这可行。
但是,我正在使用AWS Elastic Beanstalk
和Docker
来构建映像并将其部署在容器中。所以问题是,
由于 苏希尔
答案 0 :(得分:7)
昨天我开始使用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