重点是docker和springboot组合使用。
dockerfile
Dockerfile文件需要放在项目的根目录,和pom.xml在同一个目录中。
- FROM openjdk:8
- MAINTAINER "Owen Jia"
- LABEL email="xxxx@outlook.com"
- ARG JAR_FILE
- ENV ENVS="qa"
- VOLUME /tmp
- COPY ${JAR_FILE} /data/app.jar
- RUN echo 'docker image is building'
- WORKDIR /data/
- EXPOSE 8080
- ENTRYPOINT ["java", "-jar", "-Xmx350MB -Xms150MB", "./app.jar", "-Denv=$ENVS"]
maven pom
dockerfile-maven-plugin是docker-maven-plugin的改进版,老版本的Dockerfile文件不是必须有的。推荐集成前者到项目中使用,最新版已经到“1.4.10”。
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <version>1.4.8</version>
- <executions>
- <execution>
- <id>default</id>
- <goals>
- <goal>build</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <repository>sample/${project.artifactId}</repository>
- <tag>${project.version}</tag>
- <buildArgs>
- <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
- </buildArgs>
- <buildDirectory>${project.basedir}/target</buildDirectory>
- </configuration>
- </plugin>
maven build
docker build通过命令行方式运行是本质。
docker build --build-arg JAR_FILE="target/sample-1.0.0.jar -t sample/cnlink .
集成到项目中,通过maven插件方式运行
mvn dockerfile:build
or mvn package
会在target目录下生成 sample-1.0.0-SANPSHOT-docker-info.jar,同时在docker本地镜像库中会生成对于的image,可以用docker image ls
查看。
Gradle中docker plugin使用
上面描述都是在maven基础上build image案例,我还写了个demo是基于gradle的,已经放在github上可以关注下载直接使用,项目如下地址:
案例:gradle-test
部分代码
- buildscript {
- ext{
- springBootVersion = '2.0.6.RELEASE'
- }
- repositories {
- jcenter()
- mavenCentral()
- }
- dependencies {
- classpath('org.springframework.boot:spring-boot-gradle-plugin:2.0.6.RELEASE')
- classpath("se.transmode.gradle:gradle-docker:1.2")
- }
- }
- // .....
- //自定义task构建image
- task dockerBuilder(type: Docker) {
- push = false
- baseImage 'openjdk:8'
- maintainer 'Owen Jia'
- applicationName = jar.baseName
- tagVersion = jar.version
- volume('/tmp')
- addFile("${jar.baseName}-${jar.version}.jar", "/data/app.jar")
- workingDir('/data/')
- entryPoint(["java", "-Denv=qa", "-jar", './app.jar'])
- exposePort(8080)
- doFirst {
- copy {
- from jar
- into stageDir
- }
- }
- }
友情链接
maven插件地址:dockerfile-maven-plugin
作者博客网站:Owen Blog