我有一个我写的java程序。主要包括openjdk8、maven和javafx。程序自行构建和运行。我想把它放在一个码头集装箱里,但我很难把它造出来。
这是我的文件:
FROM openjdk:8-jdk
FROM maven:3.3-jdk-8-onbuild
RUN apt-get update && apt-get install -y --no-install-recommends openjfx && rm -rf /var/lib/apt/lists/*
CMD ["java","-jar","target/"CodeDemo-1.0-SNAPSHOT.jar"]
以下是我用来构建容器的内容:
sudo docker build -t java-maven-code-demo .
以下是我一直抱怨没有javafxpackager的错误:
未能执行目标org.codehaus。mojo:exec-maven-plugin:1.2.1:项目codedemo上的exec(解包依赖项):命令执行失败。无法运行程序“/usr/lib/jvm/java-8-openjdk-amd64/jre/./bin/javafxpacker”(在目录“/usr/src/app”中):错误=2,没有这样的文件或目录->[help 1]
我在codedemo目录下有所有的文件。在顶层,我有src、target、dockerfile、pom.xml。在target中,我已经编译了jar。
我对这个错误感到困惑,因为我认为Java8OpenJDK是javafx附带的。因此,如果我拉openjdk,我应该得到javafx所需的东西(github上的类似问题-解决方案仍然给出了错误)。
有人能指出我可能做错的方向吗?我还需要做些什么才能找到合适的图书馆吗?
1条答案
按热度按时间xjreopfe1#
你有多个
FROM
线。基于dockerfile,将只使用maven基本映像。也许可以尝试通过另一个安装openjdkRUN
安装openjfx之前的语句?我也没看到
COPY
在dockerfile中的语句。我最初以为CodeDemo-1.0-SNAPSHOT.jar
默认情况下存在于maven映像上,但我只是尝试构建映像,但它不存在。如果这是java程序中的jar文件,不要忘记通过COPY
在dockerfile中的语句。