2016-09-26 122 views
5

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

ARG myvar 

并使用命令docker build --build-arg mvar=myOwnVar ...,这将工作。

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

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

感谢 苏希尔

+0

哇,因为没有事情只是重要的“ 16,但仍然没有答案,我有同样的困境。我已经失去了整整一天 – rkmax

回答

3

昨天我开始使用AWS EB,我很高兴,今天我需要通过一些ARG到我的生成,发现这对文档

enter image description here

很伤心

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

解决方法

一个可能的解决方案是我在做什么目前,之前运行搬运工建立一些文件添加到EB,并从Dockerfile

例如使用它,让我们假设我需要一个变量名称TOKEN我的搬运工像

RUN curl http://somemething.comtoken=$TOKEN 

所以whay我所做的就是

添加一个新的脚本文件

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