[docker从入门到入土]spring-boot项目打包doc
本文档介绍将一个spring-boot项目打包成一个docker镜像,并进行运行测试.
本文档的打包方法来自spring官网spring-boot打包成docker镜像,网址:
http://spring.io/guides/gs/spring-boot-docker/
先看项目,项目结构如图

注意在项目根目录下创建了一个Dockerfile的文件,文件内容暂时不看.
DockerController的内容

直接访问返回hello world
pom文件,需要在build中加入
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<repository>docker/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
repository即打包后得到的镜像的名称
buildArgs是Dockerfile中引用到的参数
Dockerfile文件
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
ARG即pom文件中指定的参数
VOLUME 表示在镜像的目录中创建一个/tmp的文件目录,这一步是可选的,如果需要一些文件操作,建议通过这个参数指定文件目录供程序使用
首先打包jar文件,用的命令是mvn package,这一步可以借助编译器打包或者cmd命令行.
这里通过git命令行演示
进入项目目录

打包jar

最后

生成的jar文件在target目录下
打包成镜像,命令是 mvn install dockerfile:build
这一步可能打包错误,输出信息贴一下编译器中使用这个命令的结果

这里需要重新设置下docker-machine env

正确的输出信息中包括打包文件和生成镜像俩部分


使用docker images查看生成的镜像

运行这个镜像

访问测试
