【问题标题】:IntelliJ Ktor and Docker is there a better way?IntelliJ Ktor 和 Docker 有没有更好的方法?
【发布时间】:2019-12-14 03:12:31
【问题描述】:

所以我在 IntelliJ 中启动了一个 ktor 项目,它在那里运行良好。但是,我现在尝试让 docker 使用从 build/libs 目录创建的 jar,但出现此错误:

WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: io/ktor/application/Application
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
    at java.lang.Class.getMethod0(Class.java:3018)
    at java.lang.Class.getMethod(Class.java:1784)
    at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: io.ktor.application.Application
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 7 more

这就是我的 ktor.Dockerfile 的样子:

FROM openjdk:8-jre-alpine

ENV APPLICATION_USER ktor
RUN adduser -D -g '' $APPLICATION_USER

RUN mkdir /app
RUN chown -R $APPLICATION_USER /app

USER $APPLICATION_USER

COPY ./build/libs/website-0.0.1.jar /app/website-0.0.1.jar
WORKDIR /app

CMD ["java", "-server", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-XX:InitialRAMFraction=2", "-XX:MinRAMFraction=2", "-XX:MaxRAMFraction=2", "-XX:+UseG1GC", "-XX:MaxGCPauseMillis=100", "-XX:+UseStringDeduplication", "-cp", "website-0.0.1.jar", "com.diracian.ApplicationKt"]

我首先做的是启动一个 ktor 项目,在我开始工作之后,我开始着手处理我的 Dockerfile。

【问题讨论】:

    标签: intellij-idea dockerfile ktor


    【解决方案1】:

    实际上,最终把它分解成碎片。

    我的文件现在看起来像这样并且可以正常工作:

    FROM gradle:jdk10 as builder
    
    COPY --chown=gradle:gradle . /home/gradle/src
    WORKDIR /home/gradle/src
    RUN gradle build
    
    FROM openjdk:10-jre-slim
    EXPOSE 8080    
    COPY --from=builder /home/gradle/src/build/distributions/website-0.0.1.tar /app/
    WORKDIR /app
    RUN tar -xvf website-0.0.1.tar
    WORKDIR /app/website-0.0.1
    CMD bin/website
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多