【发布时间】:2021-07-26 10:48:48
【问题描述】:
我正在尝试将存储在 Docker Registry 中的 Spring Boot 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.
我知道这可能是由端口和地址设置引起的,所以我参考the official doc 修复了这些部分,但仍然遇到相同的错误。具体来说,我在 application.yml 上将这些设置如下。
server:
port: ${PORT:8080}
address: ${ADDRESS:localhost}
我知道 PORT 变量将由 Cloud Run 传递(在我的例子中,端口号在 Cloud Run 上设置为 8080)。还有ADDRESS会自己传给我(值为0.0.0.0,参考the official doc)。
供参考,下面是我构建spring boot docker镜像的Dockerfile;
# 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"]
任何帮助将不胜感激。非常感谢您的阅读!
【问题讨论】:
-
你确定地址是0.0.0.0吗?如果是本地主机,它将无法工作
-
在 application.yml 中,我设置为“服务器:地址:${ADDRESS:localhost}”并将
ADDRESSenv 变量作为“0.0.0.0”作为 Cloud Run 修订版的 env 变量传递,所以我相信应该设置为“0.0.0.0”。我会检查这种方式是否可以设置服务器地址,以防万一。 -
不应该只是
${ADDRESS}吗? -
您在 Cloud Logging 中有哪些信息?
-
致莱莫斯;我也试过了,但是没用……
标签: spring-boot docker google-cloud-platform google-cloud-run google-container-registry