我有一個 Java 8 Spring Boot 應用程式,它部署到 Google App Engine 并通過 GCP CloudBuild 構建。我正在嘗試將其從 Java 8 升級到 Java 11。
在cloudbuild.yaml
檔案中,我更改了:
- id: 'Build and Test'
name: 'gcr.io/cloud-builders/mvn:3.5.0-jdk-8'
args: ['package', 'appengine:stage']
到:
- id: 'Build and Test'
name: 'maven:3.8.3-jdk-11'
args: ['package', 'appengine:stage']
當我運行 CloudBuild 時,這一步現在突然失敗并出現以下錯誤:
docker.io/library/maven:3.8.3-jdk-11
/usr/local/bin/mvn-entrypoint.sh: 50: exec: package: not found
在之前的配置中,它運行得很好。整個cloudbuild.yaml
檔案是:
steps:
- id: 'copy file'
name: 'ubuntu'
args: ['cp', 'src/main/appengine/app.yaml', src/main/appengine/app.yaml]
- id: 'Build and Test'
name: 'maven:3.8.3-jdk-11'
args: ['package', 'appengine:stage']
這里發生了什么?gcr.io/cloud-builders/mvn:3.5.0-jdk-8
影像是否以某種方式理解mvn package appengine:stage
,而maven:3.8.3-jdk-11
影像不理解?主要是我只需要有人幫助我理解為什么我會收到錯誤。如果有人也可以就如何修復或規避它提出一些建議,那也將不勝感激。提前致謝!
uj5u.com熱心網友回復:
查看有關遷移到Java 11 運行時的Google 檔案,我發現 App Engine 標準環境允許您在Java 11 運行時中使用多個 App Engine 的打包服務和 API,從而減少運行時轉換作業和復雜性。
專案引擎 API JAR 允許您的 Java 11 應用程式聯系捆綁的服務 API 并訪問與 Java 8 運行時相同的大部分功能。
您還可以使用在功能上等同于 App Engine 打包服務的 Google Cloud 產品。
添加遷移程序檔案的概述。
要遵循的程序是:
- 下載云 SDK。
- 從獨立的 App Engine Maven 插件遷移到基于 Cloud SDK 的 Maven 插件或基于 Cloud SDK 的 Gradle 插件。
- 如果您使用的是 App Engine 捆綁服務,請安裝 App Engine API JAR。
- 將您的 XML 檔案遷移到等效的 yaml 檔案。
現在,關于您遇到的問題,您應該指定腳本的整個路徑,因為/usr/src/app
可能不在您的路徑中。您還必須確保您entrypoint.sh
的可執行檔案;但是,根據您的情況,docker 會精確復制您的構建主機上的權限,因此這一步可能不是必需的。
額外的建議是,您不能'
對入口點/命令使用單引號,您可以嘗試使用“
,
uj5u.com熱心網友回復:
事后看來如此明顯。我需要mvn
在步驟中指定為入口點命令,如下所示:
- id: 'Build and Test'
entrypoint: mvn
name: 'maven:3.8.3.0-jdk-11'
args: ['package','appengine:stage']
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/372084.html
標籤:码头工人 行家 谷歌应用引擎 java-11 谷歌云构建