2017-12-27 353 views
2

我已經dockerized在GitHub上一個應用程序的NodeJS。我的Dockerfile基於官方的nodejs圖像。官方節點回購支持無縫地支持多種架構(x86,amd64,arm)。這意味着我可以在不同的機器上構建完全相同的Dockerfile,從而爲相應的體系結構創建不同的映像。如何自動多拱泊塢窗圖片建造

所以我試圖提供相同的架構無縫地爲我的應用程序了。但是如何? 我的目標是儘可能地自動化。 我知道我理論上需要創建一個docker-manifest,它充當docker-repo並將最終用戶docker-clients重定向到合適的圖像。

多克爾轂本身可以監視GitHub庫和開球自動構建。這將照顧amd64圖像。但是剩下的架構呢? 還有一種叫做'TravisCI'的服務,我想可以在qemu的幫助下照顧手臂的構建。 然後我認爲這兩個回購可以通過清單回購被靜態引用。但是這仍然讓一些架構未能實現。

但是,使用多種服務/建築相同的應用程序的方式覺得不妥。有誰知道這個問題更好更完整的解決方案嗎? 它基本上通過幾臺機器運行相同的dockerfile並將它們記錄在清單中。

+0

的人們是如何解決這個 – Chris

+0

我不會嘗試作出了回答,我也爲此而努力也有興趣,我結束了使用實際的設備和cron。見https://blog.slucas.fr/blog/docker-multiarch-manifest-hub-1/ – seblucas

回答

0

與泊塢18.02 CLI您可以創建多拱清單,如果你啓用了客戶端實驗功能他們推到了碼頭工人開始登記。我能夠使用VSTS,並在構建完成後爲多拱形標籤創建自定義構建任務。我遵循這種模式。

docker manifest create --amend {multi-arch-tag} {os-specific-tag-1} {os-specific-tag-2} 
docker manifest annotate {multi-arch-tag} {os-specific-tag-1} --os {os-1} --arch {arch-1} 
docker manifest annotate {multi-arch-tag} {os-specific-tag-2} --os {os-2} --arch {arch-2} 
docker manifest push --purge {multi-arch-tag} 

在附註中,我在我的自定義VSTS任務中打包了18.02 docker CLI for Windows和Linux,因此不需要安裝docker。 manifest命令似乎不需要docker守護進程正常工作。