開發期間,您可以先在本機執行並測試容器映像檔,然後再進行部署。您可以使用 Cloud Code 或安裝在本機的 Docker,在本機進行測試並執行,包括在本機執行具備 Google Cloud 服務存取權的 Docker。
事前準備
如果這是您第一次嘗試在本機執行,您可能沒有從支援的容器登錄服務存取映像檔所需的所有權限。
請參閱支援的容器登錄資料說明文件,瞭解如何取得存取權。您可以設定 Docker,使用 gcloud CLI 憑證輔助程式存取 Artifact Registry:
gcloud auth configure-docker LOCATION-docker.pkg.dev
LOCATION
替換為容器存放區的區域名稱,例如 us-west2
。
本機測試
您可以使用 Docker、具備 Google Cloud Access 的 Docker、Cloud Code 模擬器或 Google Cloud CLI 在本機進行測試。請選取適當的分頁標籤取得操作說明。
Docker
如要使用 Docker 測試您的容器映像檔:
使用 Docker 指令:
PORT=8080 && docker run -p 9090:${PORT} -e PORT=${PORT} IMAGE_URL
將 IMAGE_URL 替換為容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/hello:latest
。如果您使用的是 Artifact Registry,則必須先建立存放區 REPO_NAME。網址的形狀為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
。PORT
環境變數會指定應用程式將使用的通訊埠,以監聽 HTTP 或 HTTPS 要求。這是容器執行階段合約的規定。在此範例中,我們使用通訊埠 8080。在瀏覽器中開啟 http://localhost:9090。
如果您對於使用容器不太熟悉,可以查看 開始使用 Docker 指南。如要進一步瞭解 Docker 指令,請參閱 Docker 說明文件。
搭配 Google Cloud 存取權的 Docker
如果您使用 Google Cloud 用戶端程式庫整合使用 Google Cloud 服務的應用程式,並且並未保護這些服務的安全以控制外部存取權,便可設定本機容器,透過使用應用程式預設憑證的 Google Cloud 服務進行驗證。
如要在本機執行:
請參閱設定服務帳戶金鑰的操作說明。
以下 Docker 執行標記可將本機系統的憑證和設定植入本機容器:
- 如果您已經在機器上設定
GOOGLE_APPLICATION_CREDENTIALS
環境變數,請使用--volume
(-v
) 標記,將憑證檔案植入容器:-v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro
- 使用
--environment
(-e
) 旗標設定容器內的GOOGLE_APPLICATION_CREDENTIALS
變數:-e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json
- 如果您已經在機器上設定
您可以選擇使用這個已完整設定的 Docker
run
指令:PORT=8080 && docker run \ -p 9090:${PORT} \ -e PORT=${PORT} \ -e K_SERVICE=dev \ -e K_CONFIGURATION=dev \ -e K_REVISION=dev-00001 \ -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json \ -v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro \ IMAGE_URL
請注意,路徑
上述範例中顯示的 ,是容器內放置憑證的合理位置。/tmp/keys/FILE_NAME.json
不過也可以放到其他目錄位置。重點是
GOOGLE_APPLICATION_CREDENTIALS
環境變數必須與容器內的繫結掛接位置相符。此外還要注意,針對部分 Google Cloud 服務,您可能想要使用不同的設定,將本機的疑難排解與實際工作環境效能和資料做出區隔。
Cloud Code 模擬器
VS Code 和 JetBrains IDE 的 Cloud Code 外掛程式可讓您在 IDE 中的 Cloud Run 模擬器中,本機執行及偵錯容器映像檔。模擬器可讓您設定代表在 Cloud Run 上執行的服務的環境。
您可以設定 CPU 和記憶體分配、指定環境變數,以及設定 Cloud SQL 資料庫連線等屬性。
gcloud CLI
Google Cloud CLI 包含本機開發環境,可模擬 Cloud Run,從原始碼建構容器、在本機電腦上執行容器,並在原始碼變更時自動重建容器。
如何啟動本機開發環境:
將目錄變更為包含服務原始碼的目錄。
叫用指令:
如果本機目錄中含有 Dockerfile,系統會使用該檔案建構容器。如果沒有 Dockerfile,系統會使用 Google Cloud 的 Buildpack 建構容器。gcloud beta code dev
如要查看服務執行情形,請在瀏覽器中前往 http://localhost:8080/。如果您使用了 --local-port
選項指定自訂通訊埠,請務必在瀏覽器中開啟該通訊埠。
如要停止本機伺服器,請按照下列步驟操作:
- Mac OS 和 Linux:Control-C
- Windows:Ctrl + Break
自訂服務設定
您可以使用 YAML 檔案自訂在本機執行的服務 Cloud Run 設定。這個 YAML 格式與用於部署 Cloud Run 服務的格式相同,但只支援部分 Cloud Run 服務設定。gcloud beta
code dev
會在目前目錄中尋找並使用結尾為 *.service.dev.yaml
的任何檔案。如果找不到,系統會使用結尾為 *.service.yaml
的任何檔案。
您可以為本機開發設定下列設定:
本機開發作業不需要容器 image
欄位,因為映像檔會在指令執行時建構並提供給服務。
您可以使用以下範例 service.dev.yaml
檔案進行本機開發作業:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: my-service-name spec: template: spec: containers: - env: - name: FOO value: bar
使用憑證進行測試
如要授予容器使用 Google Cloud 服務的權限,您必須為容器提供存取憑證。
如要讓容器使用您自己的帳戶存取憑證,請使用 gcloud 登入,並使用
--application-default-credential
標記:gcloud auth application-default login gcloud beta code dev --dockerfile=PATH_TO_DOCKERFILE --application-default-credential
如要以服務帳戶身分提供應用程式憑證,請使用
--service-account
標記:gcloud beta code dev --dockerfile=PATH_TO_DOCKERFILE --service-account=SERVICE_ACCOUNT_EMAIL
確認程式碼是在本機執行
在本機上測試 Cloud Run 時,您可以檢查 K_REVISION
環境變數 (Cloud Run 會將此變數提供給所有容器),在程式碼中確認容器是否在本機上執行。
Docker
如要確認您是在 Google Cloud CLI 上本機執行程式碼,可以嘗試查詢 K_REVISION
環境變數,但由於未設定該變數,因此不會顯示任何值。
搭配 Google Cloud 存取權的 Docker
如果您在步驟 3 中使用上述部分的確切值,確認您是在 Google Cloud CLI 本機上執行程式碼,您可以查詢 K_REVISION
環境變數,並尋找 dev-00001
值,確認程式碼是在本機執行。
Cloud Code 模擬器
如要確認您是在本機上透過 Cloud Code 執行程式碼,可以查詢 K_REVISION
環境變數,並尋找 local
的值,確認程式碼是在本機上執行。
gcloud CLI
如要確認您是在 Google Cloud CLI 的本機上執行程式碼,可以查詢 K_REVISION
環境變數,並尋找以 dev-
開頭的值,確認程式碼是否在本機上執行。
後續步驟
- 如要瞭解如何在本機排解 Cloud Run 應用程式故障問題,請參閱「Cloud Run 服務的本機疑難排解」教學課程。
- 如要瞭解如何部署已建構的容器,請參照「部署服務」一文。