首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gradle作为构建工具为Kotlin http4k后端创建Docker镜像

使用gradle作为构建工具为Kotlin http4k后端创建Docker镜像
EN

Stack Overflow用户
提问于 2021-03-29 19:09:28
回答 1查看 110关注 0票数 2

我正在尝试建立一个Kotlin http4k后端的docker镜像,但我不能让它很好地工作。我不能创建一个fat jar,所以当我尝试运行镜像时,我的依赖项就丢失了。

所以我得到了一个ClassNotFound异常。

这是我的build.gradle文件:

代码语言:javascript
复制
buildscript {
    ext.kotlinVersion = "1.4.31"
    ext.http4kVersion = "4.5.0.1"

    repositories {
        mavenCentral()
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}"
    }
}

repositories {
    mavenCentral()
}

apply plugin: 'kotlin'
apply plugin: 'application'

compileKotlin.kotlinOptions.jvmTarget = "11"
compileTestKotlin.kotlinOptions.jvmTarget = "11"

mainClassName = 'com.scalangular.LauncherKt'
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11

test {
    useJUnitPlatform()
}

compileTestKotlin.kotlinOptions {
    jvmTarget = "11"
}

dependencies {
    implementation "org.http4k:http4k-contract:${http4kVersion}"
    implementation "org.http4k:http4k-core:${http4kVersion}"
    implementation "org.http4k:http4k-format-jackson:${http4kVersion}"
    implementation "org.http4k:http4k-server-jetty:${http4kVersion}"
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.30"
    // testImplementation ...
}

jar {
    manifest {
        attributes 'Main-Class': mainClassName
    }
}

这是我的Dockerfile

代码语言:javascript
复制
FROM gradle:latest as builder

COPY --chown=gradle:gradle . /home/gradle/src
WORKDIR /home/gradle/src
RUN gradle build --no-daemon 

FROM openjdk:latest
EXPOSE 9000
RUN mkdir /app
COPY --from=builder /home/gradle/src/build/libs/*.jar /app/ShoppingListApi.jar

CMD [ "java", "-jar", "-Djava.security.egd=file:/dev/./urandom", "/app/ShoppingListApi.jar" ]

我也尝试了一些gradle插件,这些插件可以让我构建一个fatjar,但我没有让它工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-30 00:28:13

您需要使用shadowjar插件来创建FatJar。这里最简单的事情是使用http4k工具箱生成一个使用阴影的模板项目,然后从那里复制gradle魔术:https://toolbox.http4k.org/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66853143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档