Во-первых, конфигурация openJKD11 во время выполнения не существует для AppEngine Flexible. Вы должны использовать пользовательскую среду выполнения, подобную этой:
runtime: custom
env: flex
handlers:
- url: /.*
script: this field is required, but ignored
Затем вы должны создать контейнерный образ вашего кода. Вы можете использовать стандарт Dockerfile
в своем проекте root, как этот
FROM maven:3.6.3-jdk-11 as builder
# Copy local code to the container image.
WORKDIR /app
COPY pom.xml .
COPY src ./src
# Build a release artifact.
RUN mvn package
FROM adoptopenjdk/openjdk11
COPY --from=builder /app/target/java-*.jar /java.jar
# Run the web service on container startup.
CMD ["java","-Djava.security.egd=file:/dev/./urandom","-Dserver.port=${PORT}","-jar","/java.jar"]
Изменить java-*.jar
этой строки COPY --from=builder /app/target/java-*.jar /java.jar
в соответствии с именем вашего JAR
А в Cloud Build просто разверните свое приложение
steps:
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app', 'deploy']
Дополнительное замечание
Ваша предыдущая Cloud Build не могла работать, потому что ваш Файл jar находился в каталоге target/
, а не в каталоге root, и ваше развертывание не нашло его. Для этого вы можете добавить параметр dir
в ваш Cloud Build
steps:
- name: 'gcr.io/cloud-builders/mvn'
args: ['package']
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app', 'deploy', '/workspace/src/main/resources/app.yaml']
dir: "target"
Но следующей ошибкой будет то, что время выполнения openjdk11 не поддерживается.