quarkus应用程序出现错误r10(引导超时)

smdncfj3  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(350)

我在将quarkus 1.10应用程序作为docker映像部署到heroku时遇到问题。
同样的应用程序,使用springboot和类似的docker映像成功引导,但是quarkus由于$port的错误绑定触发了臭名昭著的r10引导超时错误,即使我看到引导时间非常小(2秒而springboot版本为4.5秒)。如果我在本地启动图像,它可以完美地工作而没有问题。
我的最终docker图像是这样的(为了简洁起见,省略了多阶段构建步骤):

FROM gcr.io/distroless/java:11
ENV QUARKUS_MAILER_FROM=${EMAIL_USERNAME} \
    QUARKUS_MAILER_USERNAME=${EMAIL_USERNAME} \
    QUARKUS_MAILER_PASSWORD=${EMAIL_PASSWORD}
EXPOSE 8080
COPY --from=backend /usr/src/app/target/*-runner.jar /usr/app/app.jar
COPY --from=backend /usr/src/app/target/lib /usr/app/lib
ENTRYPOINT [ "java", "-jar" ]
CMD ["/usr/app/app.jar", "-Dquarkus.http.host=0.0.0.0", "-Dquarkus.http.port=${PORT}"]

我正在使用以下命令部署应用程序:

heroku container:push web
heroku container:release web

我看不出错误在哪里。我也试着移除 EXPOSE 但这不是错误的原因。

xpcnnkqh

xpcnnkqh1#

我已经解决了这个问题,真是愚蠢。
修改dockerfile的entrypoint和cmd部分,如下所示:

ENTRYPOINT [ "java" ]
CMD ["-Dquarkus.http.host=0.0.0.0", "-Dquarkus.http.port=${PORT}", "-jar", "/usr/app/app.jar"]

它起作用了。问题是,系统属性必须在 -jar 参数,否则quarkus不会为${port}选择正确的值

相关问题