此项目的代码已经放到GitHub中,地址https://github.com/twingao/springboot-docker。先展示SpringBoot项目的目录结构。

tree springboot-docker/
springboot-docker/
├── pom.xml
└── src└── main├── docker│   └── Dockerfile├── java│   └── com│       └── twingao│           ├── controller│           │   └── DemoController.java│           └── SpringbootDockerApplication.java└── resources└── application.yml8 directories, 5 files

pom.xml中引入docker-maven-plugin插件。

cat pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.4.RELEASE</version><relativePath/></parent><groupId>com.twingao</groupId><artifactId>springboot-docker</artifactId><version>1.0.0</version><name>springboot-docker</name><description>springboot docker demo</description><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>0.4.13</version><configuration><imageName>twingao/${project.name}:${project.version}</imageName><dockerDirectory>src/main/docker</dockerDirectory><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources></configuration></plugin></plugins></build>
</project>

在src/main下创建docker目录,Dockerfile就放在该目录下。

cat src/main/docker/Dockerfile
FROM openjdk:8-jdk-alpineVOLUME /opt/tmpADD springboot-docker-1.0.0.jar springboot-docker.jarENV JAVA_OPTS=""ENTRYPOINT exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /springboot-docker.jar

编译并构建Docker镜像。

mvn clean package docker:build
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< com.twingao:springboot-docker >--------------------
[INFO] Building springboot-docker 1.0.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ springboot-docker ---
[INFO] Deleting /root/code/springboot-docker/target
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ springboot-docker ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ springboot-docker ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to /root/code/springboot-docker/target/classes
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ springboot-docker ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /root/code/springboot-docker/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ springboot-docker ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ springboot-docker ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:3.1.2:jar (default-jar) @ springboot-docker ---
[INFO] Building jar: /root/code/springboot-docker/target/springboot-docker-1.0.0.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.2.4.RELEASE:repackage (repackage) @ springboot-docker ---
[INFO] Replacing main artifact with repackaged archive
[INFO]
[INFO] --- docker-maven-plugin:0.4.13:build (default-cli) @ springboot-docker ---
[INFO] Copying /root/code/springboot-docker/target/springboot-docker-1.0.0.jar -> /root/code/springboot-docker/target/docker/springboot-docker-1.0.0.jar
[INFO] Copying src/main/docker/Dockerfile -> /root/code/springboot-docker/target/docker/Dockerfile
[INFO] Building image twingao/springboot-docker:1.0.0
Step 1/5 : FROM openjdk:8-jdk-alpine---> a3562aa0b991
Step 2/5 : VOLUME /opt/tmp---> Using cache---> ce2415a919e7
Step 3/5 : ADD springboot-docker-1.0.0.jar springboot-docker.jar---> 2717f349a049
Step 4/5 : ENV JAVA_OPTS=""---> Running in e7292f45d4eb
Removing intermediate container e7292f45d4eb---> 5afb54716215
Step 5/5 : ENTRYPOINT exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /springboot-docker.jar---> Running in e5751ecddf88
Removing intermediate container e5751ecddf88---> 8b3409a5562e
ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
Successfully built 8b3409a5562e
Successfully tagged twingao/springboot-docker:1.0.0
[INFO] Built twingao/springboot-docker:1.0.0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  36.895 s
[INFO] Finished at: 2020-02-08T15:36:10+08:00
[INFO] ------------------------------------------------------------------------

查看生成的镜像。

docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
twingao/springboot-docker   1.0.0               8b3409a5562e        48 seconds ago      122MB
openjdk                     8-jdk-alpine        a3562aa0b991        9 months ago        105MB

运行容器,验证一下。

docker run -d --name springboot-docker -p 8080:8080 twingao/springboot-docker:1.0.0
b6fe11c8726a44b24c90691b48cd6f63c9548eab98161261d38d25102bd387f8docker ps
CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS              PORTS                    NAMES
98cfc8bdbc2d        twingao/springboot-docker:1.0.0   "/bin/sh -c 'exec ja…"   20 seconds ago      Up 18 seconds       0.0.0.0:8080->8080/tcp   springboot-dockercurl http://localhost:8080/demo
Hello World

打开浏览器,访问http://192.168.1.35:8080/demo,也可以访问。

可以进一步将构建的Docker镜像push到hub.docker.com上。当然首先应该有一个docker hub账号。

先修改maven的配置文件,增加docker hub服务配置。

cat /usr/local/maven-3.6.2/conf/settings.xml
...<server><id>docker-hub</id><username>docker-hub账号</username><password>docker-hub密码</password><configuration><email>docker-hub邮件地址</email></configuration></server></servers>
...

docker-maven-plugin插件增加docker hub配置。

cat pom.xml
...<plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>0.4.13</version><configuration><imageName>twingao/${project.name}:${project.version}</imageName><dockerDirectory>src/main/docker</dockerDirectory><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources><serverId>docker-hub</serverId><registryUrl>https://index.docker.io/v1/</registryUrl></configuration></plugin>
...

编译、构建Docker镜像并push到docker hub中。

mvn clean package docker:build -DpushImage
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< com.twingao:springboot-docker >--------------------
[INFO] Building springboot-docker 1.0.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ springboot-docker ---
[INFO] Deleting /root/code/springboot-docker/target
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ springboot-docker ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ springboot-docker ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to /root/code/springboot-docker/target/classes
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ springboot-docker ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /root/code/springboot-docker/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ springboot-docker ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ springboot-docker ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:3.1.2:jar (default-jar) @ springboot-docker ---
[INFO] Building jar: /root/code/springboot-docker/target/springboot-docker-1.0.0.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.2.4.RELEASE:repackage (repackage) @ springboot-docker ---
[INFO] Replacing main artifact with repackaged archive
[INFO]
[INFO] --- docker-maven-plugin:0.4.13:build (default-cli) @ springboot-docker ---
[INFO] Copying /root/code/springboot-docker/target/springboot-docker-1.0.0.jar -> /root/code/springboot-docker/target/docker/springboot-docker-1.0.0.jar
[INFO] Copying src/main/docker/Dockerfile -> /root/code/springboot-docker/target/docker/Dockerfile
[INFO] Building image twingao/springboot-docker:1.0.0
Step 1/5 : FROM openjdk:8-jdk-alpine---> a3562aa0b991
Step 2/5 : VOLUME /opt/tmp---> Using cache---> ce2415a919e7
Step 3/5 : ADD springboot-docker-1.0.0.jar springboot-docker.jar---> 2535eff7e177
Step 4/5 : ENV JAVA_OPTS=""---> Running in 7c7041df4f51
Removing intermediate container 7c7041df4f51---> d87e0602b118
Step 5/5 : ENTRYPOINT exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /springboot-docker.jar---> Running in 1ea77b69a6cd
Removing intermediate container 1ea77b69a6cd---> 9ccd40c50a80
ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
Successfully built 9ccd40c50a80
Successfully tagged twingao/springboot-docker:1.0.0
[INFO] Built twingao/springboot-docker:1.0.0
[INFO] Pushing twingao/springboot-docker:1.0.0
The push refers to repository [docker.io/twingao/springboot-docker]
fa517bd9ccf3: Pushed
ceaf9e1ebef5: Layer already exists
9b9b7f3d56a0: Layer already exists
f1b5933fe4b5: Layer already exists
1.0.0: digest: sha256:147e1d4475fc74a083bcf50e2a96abd13e8f796fc56b1d5445291fecd7ed8880 size: 1159
null: null
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  52.408 s
[INFO] Finished at: 2020-02-08T21:07:21+08:00
[INFO] ------------------------------------------------------------------------

使用spotify的docker-maven-plugin插件将SpringBoot项目打包为Docker镜像相关推荐

  1. springboot项目打包为docker镜像并上传nexus私服

    springboot项目docker打包镜像上传Nexus私服 1.springboot项目打包为docker镜像并上传nexus私服 1.0. 必要条件 1.1.开启docker远程访问 1.2.配 ...

  2. Maven项目打包成Docker镜像并启用

    SpringBoot项目打包成Docker镜像 1.将Maven项目打包成一个jar包. (先clean,再package) 2.创建一个docker文件夹,以及Dockerfile文件 mkdir ...

  3. 将SpringBoot项目制作成Docker镜像并在本机访问

    一.将springboot项目打包并制成镜像 1.在项目根目录运行mvn clean 清空打包内容,再运行mvn package将项目打包成jar包. 2.在jar包同级目录下创建一个dockfile ...

  4. eclipse maven plugin 插件 安装 和 配置

    本文转自:http://www.blogjava.net/fancydeepin/archive/2012/07/13/eclipse_maven3_plugin.html maven3 安装: 安装 ...

  5. docker部署springboot_创建SpringBoot项目部署到docker全过程

    目录 docker 介绍 安装 docker Ubuntu 安装 docker CentOS 安装 docker 通过脚本安装 拉取 java 环境 创建 springboot 项目 打包 sprin ...

  6. 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上

    一个用于构建和推送Docker镜像的Maven插件. 使用Maven插件构建Docker镜像,将Docker镜像push到DockerHub上,或者私有仓库,上一篇文章是手写Dockerfile,这篇 ...

  7. gitlab-ci docker maven 自动化流水线部署 springboot多模块项目

    一.准备 首先 需要两台服务器(这里为了下面方便理解,我们约定这两台服务器地址.名称和系统) 1.gitlab 服务器 服务器A(地址10.10.10.7)(内存大于4g不然会一直死)( CentOS ...

  8. 使用docker和jenkins简单部署springboot项目

    安装docker Docker 要求 CentOS 系统的内核版本高于 3.10 uname -r 3.10.0-327.el7.x86_64 安装docker yum -y install dock ...

  9. idea中,springboot项目部署到docker

    一.首先在linux下面安装docker 安装方法:https://blog.csdn.net/qq_35990967/article/details/118667939?spm=1001.2014. ...

最新文章

  1. 钢铁侠“变身”AI布道师?小罗伯特·唐尼这次推出一部AI科普纪录片
  2. 周周有好文2007-10-28 2007-11-3
  3. 红黑树(RB-Tree)比AVL强在哪?
  4. php7垃圾回收机制l_php5和php7垃圾回收上的区别是什么?
  5. java I O类大全_Java I/O —— File类
  6. HTML5 — 知识总结篇《V》【a元素】
  7. java判断1到1000素数_JAVA作业.找出1~1000以内的质数
  8. 一、CRUB的使用及如何终端关机
  9. c++win32项目 如何显示后再删除一个绘图_以weblogic为中间件,部署一个项目,需如何做?...
  10. MeanTeacher论文学习笔记
  11. 国产框架MindSpore联合山水自然保护中心,寻找、保护「中华水塔」中的宝藏生命
  12. pandas数据分组聚合——groupby()、aggregate()、apply()、transform()和filter()方法详解
  13. java关于ServletConfig FilterConfig什么用
  14. mac使用hbuilderx安卓模拟器调试app
  15. 最优化方法(学习笔记)-第十一章等式约束优化问题
  16. 树莓派+MediaPipe+PCA9685+自制摄像机云台实现人脸跟踪移动
  17. 美国要求签证申请人提供社交媒体账号
  18. IPv6闲谈-一起玩玩IPv6自动配置
  19. Unity3D网络游戏《僵尸星球》
  20. 从大乘“六度法”说起

热门文章

  1. 娶妻要娶贤妻,不是美女
  2. 看井上雄彦是如何作画的!
  3. java编程——案例1:模拟购物车
  4. 群晖开启root权限及修复Moments的AI人像服务
  5. 大雁塔,青龙寺,樱花舞,落尘香
  6. 如何建立Qt Creator交叉编译嵌入式Linux
  7. 瘦客户机为何不瘦反胖?
  8. 200行JS代码为你的网页挂上红灯笼
  9. 102-首发URSINA中文入门指南-打开山河社稷图
  10. NFT Insider由WHALE社区、BeepCrypto联合出品,浓缩每周NFT新闻,为大家带来关于NFT最全面、最新鲜、最有价值的讯息。