2016-09-26 107 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