Docker容器中的Spring Boot应用程序在构建成功后未在Cloud Run中启动-无法访问jarfile



我已经为我的Spring Boot项目从GitHub设置了到Cloud Run的连续部署,虽然它在Cloud Build中成功构建,但当我转到Cloud Run时,我在创建修订版下遇到了以下错误:The user-provided container failed to start and listen on the port defined provided by the PORT=8080 environment variable.

当我转到日志时,我看到以下错误:

2022-09-23 09:42:47.881 BST
Error: Unable to access jarfile /app/target/educity-manager-0.0.1-SNAPSHOT.jar
{
insertId: "632d7187000d739d29eb84ad"
labels: {5}
logName: "projects/educity-manager/logs/run.googleapis.com%2Fstderr"
receiveTimestamp: "2022-09-23T08:42:47.883252595Z"
resource: {2}
textPayload: "Error: Unable to access jarfile /app/target/educity-manager-0.0.1-SNAPSHOT.jar"
timestamp: "2022-09-23T08:42:47.881565Z"
}

2022-09-23 09:43:48.800 BST
run.googleapis.com
…ager/revisions/educity-manager-00011-fod
Ready condition status changed to False for Revision educity-manager-00011-fod with message: Deploying Revision.
{
insertId: "w6ptr6d20ve"
logName: "projects/educity-manager/logs/cloudaudit.googleapis.com%2Fsystem_event"
protoPayload: {
@type: "type.googleapis.com/google.cloud.audit.AuditLog"
resourceName: "namespaces/educity-manager/revisions/educity-manager-00011-fod"
response: {6}
serviceName: "run.googleapis.com"
status: {2}}
receiveTimestamp: "2022-09-23T08:43:49.631015104Z"
resource: {2}
severity: "ERROR"
timestamp: "2022-09-23T08:43:48.800371Z"
}

Dockerfile如下(查看构建日志,其中的所有命令都已成功完成(:

FROM openjdk:17-jdk-alpine
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
COPY . /app
ENTRYPOINT [ "java","-jar","/app/target/educity-manager-0.0.1-SNAPSHOT.jar" ]

我已经读到Cloud Run默认公开端口8080,但为了安全起见,我将server.port=${PORT:8080}放在了application.properties文件中(但这似乎没有任何区别(。

我过去也遇到过类似的问题。通常,我可以通过以下方式解决此问题:

  • 指定应用程序本身中的端口(如您在文章中所述(,以及
  • 在我的dockerfile中暴露所需的端口,例如EXPOSE 8080

天哪,我做到了。经过整整两天的挖掘,我意识到,因为我是通过github完成的,所以我的.gitignore文件不包括包含jar文件的/target文件夹,所以Cloud Build从未得到Dockerfile中提到的jar文件。

我要哭一场,然后去酒吧。

相关内容

最新更新