从Spring Boot Jar构建Docker镜像

时间:2016-10-03 18:10:15

标签: docker spring-boot

我正在尝试使用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'。

如何从胖罐中构建泊坞窗图像?

3 个答案:

答案 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