秦悦明的运维笔记

spring boot与docker结合

1. 结合起来跟其他java程序差不多

无非就是dockerfile,然后build ,push ,pull 。但是spring boot特别适合微服务,特别适合在容器里面跑,因为他内嵌了tomcat,单进程。https://spring.io/guides/gs/spring-boot-docker/ 讲述了他和mvn结合的奇妙例子。

2. Dockerfile

1
2
3
4
5
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"]

虽然这是一个普通的不能再普通的dockerfile,但是里面的JAR_FILE很完美的替代了硬编码,具体是mvn传进去的参数。

3.mvn配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<properties>
<docker.image.prefix>springio</docker.image.prefix>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>

用了个dockerfile-maven-plugin的插件,直接将mvn package 的jar文件名传到dockerfile里面去。
可以直接用mvn命令来build 。

1
mvn install dockerfile:build

build完之后可以push,带tag的push,非常方便。官网https://github.com/spotify/docker-maven-plugin