我从http://start.vertx.io/下载了一个vert.x入门项目,并希望在Docker容器中使用java -jar ..
运行编译后的二进制文件。
当前调用命令:
mvn package exec:java -DskipTests
当前Dockerfile
:
FROM java:10
COPY target/project-1.0-SNAPSHOT.jar project.jar
ENTRYPOINT java -jar project.jar
在运行时会给出以下错误消息
中没有主清单属性 /project/target/vertx-start-project-1.0-SNAPSHOT.jar
有没有比通常使用Maven来构建完整的部署程序集更简单的方法?
答案 0 :(得分:2)
当您运行这样的命令时:
mvn package exec:java
vert.x特定配置将使Maven创建:
SNAPSHOT.jar
SNAPSHOT-fat.jar
像这样:
fat.jar中包含所有文件,因此您只需要将该jar文件复制到Docker映像即可。
FROM openjdk:10-jre-slim
COPY target/SNAPSHOT-fat.jar fat.jar
ENTRYPOINT java -jar fat.jar
您使用以下命令构建docker映像:
docker build -t foo .
然后将docker映像作为容器运行:
docker run -it foo
答案 1 :(得分:0)
可运行的jar需要在MANIFEST.MF中有一个Main-Class
条目,并带有要启动的类的名称。
您很可能还需要复制您的依赖项。
请考虑此应用程序的完整部署。
答案 2 :(得分:0)
就像Thorbjørn所说的那样,此命令执行一个“可运行”的jar,这意味着它应该已经装有MANIFEST.MF,该MANIFEST.MF指向项目中的某些certian主方法。