我正在尝试使用spring boot fat jar跟随启动和运行Docker的教程。我安装了所有东西,可以从Docker Hub运行Hello World示例。
我使用名为predictive-text-tree-0.0.1-SNAPSHOT.jar
的Maven创建了胖罐,并使用以下作为我的dokerfile.docker:
FROM java:8
MAINTAINER ltocode
EXPOSE 8080
ADD predictive-text-tree-0.0.1-SNAPSHOT.jar /data/predictive-text-tree-0.0.1-SNAPSHOT.jar
CMD java -jar /data/textpredict.jar
我在服务器上有jar和docker文件,当我运行docker build命令时,我得到以下内容:
〜/ build#docker build -t predictive-text-tree-0.0.1-SNAPSHOT.jar
t的无效参数“predictive-text-tree-0.0.1-SNAPSHOT.jar”:解析引用时出错:“predictive-text-tree-0.0.1-SNAPSHOT.jar”不是有效的存储库/标记 请参阅'docker build --help'。
如何从胖罐中构建泊坞窗图像?
答案 0 :(得分:2)
您在构建命令中提供了错误的参数。用于标记结果图像的-t
参数。这意味着,-t
后面应该是图像名称,而不是jar文件。您可以在docker build document中找到更多详细信息。
答案 1 :(得分:1)
我也有同样的情况。 我有一个使用嵌入式H2数据库的示例Spring Boot应用程序。我已经制作了一个如下的Dockerfile。
FROM openjdk:8
EXPOSE 8081
ADD target/book-rest-api-reactjs-0.0.1-SNAPSHOT.jar book-rest-api-reactjs-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java","-jar","/book-rest-api-reactjs-0.0.1-SNAPSHOT.jar"]
然后我使用以下命令构建docker。
docker build -t book-rest-api-reactjs.jar。
下一步,使用以下命令列出图像,以确保图像在本地可用。
docker image ls
然后使用以下命令运行图像。
docker run -p 9090:8081 book-rest-api-reactjs.jar
现在,当我访问端点(http://localhost:9090/rest/books)时,我可以获得结果。
答案 2 :(得分:0)
更优雅的方式:在过去,docker-maven-plugin最适合我,潜行预览就在这里:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>VERSION GOES HERE</version>
<configuration>
<imageName>example</imageName>
<baseImage>java:8</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"] </entryPoint>
<!-- copy the service's jar file from target into the root directory of the image -->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
除了能够使用您的项目正确构建它之外,还可以将图像直接推送到docker注册表:
mvn ... docker:build -DpushImageTags -DdockerImageTag=latest -DdockerImageTag=tag