簡體   English   中英

單個Docker鏡像從VSTS構建/發布定義推入AWS彈性容器注冊表(ECR)

[英]Single Docker image push into AWS elastic container registry (ECR) from VSTS build/release definition

我們有一個python docker鏡像需要在AWS容器注冊表中構建/發布(CI / CD)。 目前AWS不支持使用docker hub私有存儲庫運行docker任務,因此我們必須使用ECR而不是docker hub。

我們的CI / CD管道使用docker構建和推送任務。 Docker身份驗證通過VSTS項目中的服務端點完成。

為ECR設置VSTS服務端點時,我們應該遵循幾個步驟。 這需要執行AWS CLI命令(本地或雲)以獲取docker客戶端登錄的用戶和密碼,它看起來像;

aws ecr get-login --no-include-email

上面的命令輸出一個docker login命令,其中包含用戶名(AWS)和密碼(令牌)。

這種方法的問題是訪問令牌將持續12個小時。 因此,CI / CD任務需要每12小時更新一次服務端點,否則構建將因未經授權的令牌異常而失敗。

我們的其他選擇是運行一些shell命令來執行aws get-login命令並在同一個上下文中運行docker build / push命令。 此選項需要將aws cli安裝到構建代理程序中(我們使用的是公共Linux代理程序)。 另外,shell命令涉及使用環境/變量進行笨拙的任務配置。 否則,我們將在構建步驟中公開aws應用程序ID和秘密。

如果您使用帶有AWS ecr的docker解決了VSTS CI / CD管道,請問您能提供建議嗎?

謝謝,Mahi

經過大量的研究,試驗和錯誤,我找到了自己問題的答案。

AWS通過構建任務和服務端點為VSTS提供擴展。 您需要使用帳號,應用程序ID和密碼配置AWS服務端點。 然后,在您的構建/發布定義中;

  1. 使用開箱即用的docker build任務或shell / bash命令構建docker鏡像(例如; docker build -t your:tag。)

  2. 然后添加另一個構建步驟以將映像推送到AWS注冊表,為此您可以使用AWS擴展任務(Amazon Elastic Container Registry Push Image)。 每次運行此構建定義時,Amazon Elastic Container Registry Push Image構建任務都將生成令牌和登錄docker客戶端。 您不必擔心每12小時更新一次用戶名/令牌,AWS擴展構建任務將為您執行此操作。

建立碼頭圖像

亞馬遜彈性容器注冊表推送圖像

你正在尋找這個

Amazon ECR Docker憑證助手AWS文檔 Amazon ECR Docker Credential Helper使開發人員可以輕松使用ECR,而無需使用docker登錄或寫入邏輯來刷新令牌並提供對ECR存儲庫的透明訪問。

Credential Helper可幫助開發人員在持續開發環境中自動執行ECR存儲庫的身份驗證過程,而無需每12小時重新生成一次令牌。 此外,Credential Helper還提供令牌緩存,因此您不必擔心受到限制或編寫其他邏輯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM