2016-05-06 100 views
3

我有一個Dockerfile拉動從GitHub的私人回購協議,通過使用用戶訪問令牌:在彈性提供環境變量彈性魔豆泊塢窗部署

ARG DEPLOYMENT_TOKEN 
RUN git clone https://$DEPLOYMENT_TOKEN:[email protected]/company-org/api.git /tmpapp/ 

現在,當我創建一個新的應用程序,以及環境beanstalk,當它首次嘗試構建docker鏡像並部署時,如何使用該訪問令牌提供彈性beanstalk?

可以將它傳遞給eb cli命令eb create嗎?

eb create --envvars DEPLOYMENT_TOKEN=$DEPLOYMENT_TOKEN 

那麼當應用程序試圖創建環境和部署,這將包括環境變量,以便建立泊塢窗圖像時,它將能夠從私人回購拉?

我知道eb setenv允許您在成功部署後設置一個環境變量,但是我想爲docker構建過程執行此操作。

我不想通過使用容器描述中的環境密鑰將訪問令牌放入Dockerrun文件中。

{ 
    "containerDefinitions": [ 
    { 
     "name": "myContainer", 
     "image": "something", 
     "environment": [ 
     { 
      "name": "MY_DB_PASSWORD", 
      "value": "password" 
     } 
     ], 

,因爲這意味着該信息提供給任何人,反正我甚至不能確定,將工作。

我也考慮過.eexxtensions,現在正在研究這個問題。

+0

是的,它應該工作,但你爲什麼不乾脆給它一個嘗試,看看會發生什麼 – dkarchmer

+0

@dkarchmer我沒有,但我覺得最大的問題是,如果我要提供的建造時間ARGS然後我在Dockerfile中引用,我需要能夠提供這些構建時間參數。 Dockerrunfile實際上沒有任何文檔,並且從我所看到的沒有任何選項可以包含構建參數 – user1658296

+0

您可能希望避免以這種方式構建。相反,只需將所有代碼放在dockerfile的相同位置,然後讓EB部署釋放所有內容。這樣,您的dockerfile只需要ADD或COPY即可將文件移動到圖像中 – dkarchmer

回答

0

AWS對此有一篇文章:

Microservices Service Discovery

我發現夫婦這可能是在配置服務發現興趣更多的資源。

  1. 使用S3
  2. 使用Consul in ECS
    1. 儘管本文描述了容器使用Consul進行DNS查詢以發現其他服務的方法 - 您還可以使用Consul作爲K/V store來存儲機密信息。