簡體   English   中英

我可以運行 Docker 容器以在另一個 Google Cloud Build 步驟中使用嗎?

[英]Can I run a Docker container to use in another Google Cloud Build step?

我想在 Docker 容器中運行一個新的 MySQL 實例作為雲構建,然后在稍后的步驟中訪問該 MySQL 數據庫以運行單元測試。 這可能嗎? 似乎我可以在構建步驟中運行 Docker 容器,但直到容器存在該步驟才完成 我希望這個 MySQL 容器保持運行,直到最終構建步驟完成。

FWIW 我想在 Rails 項目上的 Ruby 上使用它來運行 rspec 測試。 我目前使用 CloudSQL 實例來運行測試,但速度很慢,即使相同的測試在本地運行得很快。 將 Cloud Builder 的機器類型更改為強大的東西並沒有幫助,所以我認為延遲是我最大的殺手,這就是為什么我想嘗試一個對等的容器 MySQL 實例。

事實證明,至少有兩種方法可以給這只貓剝皮:

  1. 使用docker-compose雲構建器在 1 步中啟動多個容器:MySQL 和一個測試運行器。 這里的缺點是該步驟永遠不會完成,除非因為 MySQL 將在后台運行並且永遠不會退出。 我想人們可以寫一個包裝器讓它在幾分鍾后死掉。
  2. 實際上,您可以在早期構建步驟中使用-d啟動一個容器,並確保它在cloudbuild docker 網絡上,然后如果它們也在cloudbuild網絡上,那么以后的步驟可以連接到它。 本質上,Mysql 步驟將快速“完成”,因為它只是以守護程序模式啟動服務器,然后繼續下一個構建步驟。 稍后,測試運行程序將針對新數據庫運行測試,並在實際完成測試時完成其構建步驟。

我選擇了選項 2,使用 dockerized MySQL 服務器,我的 16 分鍾單元測試(在同一區域針對 CloudSQL 運行)縮短到 1.5 分鍾。

AFAIK,你不能這樣做。 每個步驟都是獨立的,您不能運行后台步驟。

我的解決方案是讓 MySQL 在與單元測試相同的步驟中運行,並在同一步驟中將 MySQL 作為后台進程運行。 很無聊(因為您必須在您的步驟中安裝並運行 MySQL)但我沒有更好的解決方案。

為了更方便使用,您可以為 Cloud Build 創建自己的自定義構建器

暫無
暫無

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

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