返回

如何在 Render.com 上部署 Quarkus 应用:指南与疑难解答

java

在 Render.com 上部署 Quarkus 应用:问题与解决方案

引言

随着 Heroku 即将取消免费套餐,许多开发者正在寻找替代平台来部署他们的 Java 应用。Render.com 是一个受欢迎的选择,因为它支持 Docker,即使你对 Docker 不熟悉也没关系。本文将指导你如何将 Quarkus 应用部署到 Render.com,并解决你可能遇到的常见问题。

问题

按照 Render.com 的文档,我创建了一个新的项目,连接了 GitHub 仓库并指定了自定义 Dockerfile 路径。但是,构建失败,出现以下错误:

error: failed to solve: failed to compute cache key: failed to calculate checksum of ref ybv5ya8wywl2vxh03tp4kiw9y::xq421txz9uzdcqymi3ygmk6xb: failed to walk /home/user/.local/tmp/buildkit-mount4168277661/target/quarkus-app: lstat /home/user/.local/tmp/buildkit-mount4168277661/target/quarkus-app: no such file or directory

经过一番调查,我发现错误的原因是 Dockerfile 中缺少 ./mvnw package 命令。

解决方法

为了解决这个问题,我在 Dockerfile 的第 5 行(在 COPY 语句之前)添加了以下行:

RUN ./mvnw package

这将执行 Maven 打包命令,并在 target 目录中生成所需的 JAR 文件。

部署

修改 Dockerfile 后,构建成功,我的应用部署到 Render.com。现在,我的应用可以正常访问了。

常见问题解答

1. 我需要使用哪个 Dockerfile?

Quarkus 附带了一个预配置的 Dockerfile,你可以在 ./src/main/docker/Dockerfile.jvm 路径下找到它。

2. 我需要指定哪些构建设置?

在 Render.com 项目中,你需要指定自定义 Dockerfile 路径(./src/main/docker/Dockerfile.jvm)并设置 DOCKER_ARGS 环境变量:

DOCKER_ARGS="--build-arg JAVA_OPTS=-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"

3. 我可以自定义 Docker 镜像吗?

是的,你可以自定义 Docker 镜像。在 Dockerfile 中,你可以添加其他命令或修改现有命令。

4. 我的应用可以访问数据库吗?

要让你的应用访问数据库,你需要在 Render.com 项目中创建数据库服务,然后在应用的配置中指定数据库连接信息。

5. 我在哪里可以获得支持?

如果你在部署 Quarkus 应用时遇到问题,可以查看 Render.com 的文档或加入 Render.com Discord 社区寻求帮助。