You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dokku应用容器中正确切换Java Runtime至Java 11?

在Dokku容器中为Ktor应用切换Java 11的正确方法

直接进入容器修改Java版本是不推荐的——容器重启或重新部署后所有临时修改都会丢失,下面是几种持久化、可维护的正确方案:

方案一:通过项目构建工具指定Java版本(推荐)

这种方式从代码层面控制版本,确保本地开发和部署环境一致,可移植性最强。

Gradle 配置

在项目的build.gradle.kts(Groovy版则是build.gradle)中添加:

java {
    sourceCompatibility = JavaVersion.VERSION_11
    targetCompatibility = JavaVersion.VERSION_11
}

tasks.withType<JavaCompile> {
    options.encoding = "UTF-8"
}

同时更新Gradle wrapper版本(确保支持Java 11),修改gradle/wrapper/gradle-wrapper.properties中的distributionUrl,比如使用Gradle 7.5:

distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip

Maven 配置

在pom.xml的<properties>节点中添加:

<properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
</properties>

方案二:通过Dokku的Java Buildpack配置

如果使用Dokku默认的Java Buildpack(基于Heroku Buildpack),可以在项目根目录创建system.properties文件,直接指定Java版本:

java.runtime.version=11

部署时Dokku会自动读取该文件,拉取并使用Java 11运行环境。

方案三:自定义Dockerfile(适合复杂环境)

如果需要更灵活的环境配置,比如添加额外依赖,可以直接编写Dockerfile:

# 基于官方OpenJDK 11轻量镜像
FROM openjdk:11-jre-slim

# 复制构建好的Ktor应用jar包到容器内
COPY build/libs/your-ktor-app-name.jar /app.jar

# 启动应用的命令
CMD ["java", "-jar", "/app.jar"]

将your-ktor-app-name.jar替换为实际的jar文件名,部署时Dokku会自动使用该Dockerfile构建镜像。

内容的提问来源于stack exchange,提问作者Aleksandar Ilic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 16:22:06