如何使vert.x项目在Docker容器中工作?

时间:2019-01-27 06:25:12

标签: java maven docker vert.x

我从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来构建完整的部署程序集更简单的方法?

3 个答案:

答案 0 :(得分:2)

当您运行这样的命令时:

mvn package exec:java

vert.x特定配置将使Maven创建:

SNAPSHOT.jar
SNAPSHOT-fat.jar

像这样:

enter image description here

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主方法。