簡體   English   中英

Cloud Run:部署 spring docker 映像導致錯誤; 無法啟動並監聽 PORT 環境變量定義的端口

[英]Cloud Run: deploying spring docker image causing error; Failed to start and then listen on the port defined by the PORT environment variable

我正在嘗試將存儲在 Docker 注冊表中的 spring 引導 docker 映像部署到 Cloud Run。
但是,當我部署映像時,出現錯誤;

Cloud Run error: Container failed to start. Failed to start and then listen on the port defined by the PORT environment variable. Logs for this revision might contain more information.

我知道這可能是由端口和地址設置引起的,所以我參考官方文檔修復了這些部分,但仍然遇到相同的錯誤。 具體來說,我在 application.yml 上將這些設置如下。

server:
  port: ${PORT:8080}
  address: ${ADDRESS:localhost}

我知道PORT變量將由 Cloud Run 傳遞(在我的例子中,端口號在 Cloud Run 上設置為 8080)。 而且ADDRESS也會自己傳給我(值為0.0.0.0,參考官方文檔)。

作為參考,下面是我的 Dockerfile 構建 spring 啟動 docker 映像;

# Stage1 - execute build process
FROM openjdk:14-jdk-alpine as build_process
WORKDIR /back_end
COPY . .
RUN ./gradlew build -x test

# Stage2 - boot app with the build output above
FROM openjdk:14-jdk-alpine
EXPOSE ${PORT}
COPY --from=build_process /back_end/build/libs/back_end-0.0.1-SNAPSHOT.jar ./app.jar
RUN adduser -D user
USER user
ENTRYPOINT ["sh","-c","java -jar app.jar"]

任何幫助將非常感激。 非常感謝您的閱讀!

我知道為什么我的 docker 映像未能通過 Cloud Run 的健康檢查。 畢竟不是端口和 IP 地址的問題,而是健康檢查過程執行的時機。
部署映像后,運行狀況檢查過程似乎立即開始,盡管在我的情況下,在部署到 Cloud Run 后啟動 spring 啟動 tomcat 服務器花了將近 30 秒。
這導致了健康檢查過程的失敗,所以我修復了設置以立即啟動 tomcat 服務器,這解決了我發布的問題。

暫無
暫無

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

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