本文檔介紹將一個(gè)spring-boot項(xiàng)目打包成一個(gè)docker鏡像,并進(jìn)行運(yùn)行測(cè)試.
本文檔的打包方法來(lái)自spring官網(wǎng)spring-boot打包成docker鏡像,網(wǎng)址:
http://spring.io/guides/gs/spring-boot-docker/
先看項(xiàng)目,項(xiàng)目結(jié)構(gòu)如圖
注意在項(xiàng)目根目錄下創(chuàng)建了一個(gè)Dockerfile的文件,文件內(nèi)容暫時(shí)不看.
DockerController的內(nèi)容
直接訪問(wèn)返回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中引用到的參數(shù)
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文件中指定的參數(shù)
VOLUME 表示在鏡像的目錄中創(chuàng)建一個(gè)/tmp的文件目錄,這一步是可選的,如果需要一些文件操作,建議通過(guò)這個(gè)參數(shù)指定文件目錄供程序使用
首先打包jar文件,用的命令是mvn package,這一步可以借助編譯器打包或者cmd命令行.
這里通過(guò)git命令行演示
進(jìn)入項(xiàng)目目錄
打包jar
最后
生成的jar文件在target目錄下
打包成鏡像,命令是 mvn install dockerfile:build
這一步可能打包錯(cuò)誤,輸出信息貼一下編譯器中使用這個(gè)命令的結(jié)果
這里需要重新設(shè)置下docker-machine env
正確的輸出信息中包括打包文件和生成鏡像倆部分
使用docker images查看生成的鏡像
運(yùn)行這個(gè)鏡像
訪問(wèn)測(cè)試