1.基于Dockerfile构建SpringBoot镜像

1.1准备工作

将SpringBoot项目通过maven打成jar包: mvn clean package

1.2使用Dockerfile构建镜像

  • step1 在存放jar所在目录下创建Dockerfile文件
touch Dockerfile
  • step2 编辑Dockerfile增加以下内容
FROM java:8MAINTAINER  niugang<863263957@qq.com>RUN mkdir -p /opt/springappADD   demo-0.0.1.jar  /opt/springappEXPOSE 8088ENTRYPOINT ["java","-jar","/opt/springapp/demo-0.0.1.jar"]
  • step3 构建镜像
docker build -t springbootdemo:1.0 .
  • step4 启动容器
docker run -d  -p 8088:8088 --name sb springbootdemo:1.0 

在启动容器是可以添加数据卷,程序日志映射到宿主机,方便后期排查问题

注意:在启动过程中,一直起不起来,然后通过前台启动查看了日志。

报了如下错误:WARNING: IPv4 forwarding is disabled. Networking will not work.

解决:需要做如下配置

vim/etc/sysctl.confnet.ipv4.ip_forward=1 #添加这段代码

重启network服务

systemctl restart network && systemctl restart docker

查看是否修改成功 (备注:返回1,就是成功)

[root@docker-node2 ~]# sysctl net.ipv4.ip_forwardnet.ipv4.ip_forward = 1
  • step5 调用你的springboot应用,验证其是否正确

2.使用Maven插件构建Docker镜像

Maven是一个强大的项目管理与构建工具。如果可以使用Maven构建Docker镜像,以下几款Maven的Docker插件比较常用。

插件名称 官方地址 docker-maven-plugin https://github.com/spotify/docker-maven-plugin

上面插件可以从github看到此插件已经不再推荐了。推荐使用

https://github.com/spotify/dockerfile-maven 具体操作步骤上面有介绍

docker-maven-plugin https://github.com/fabric8io/docker-maven-plugin
docker-maven-plugin https://github.com/bibryam/docker-maven-plugin

2.1直接配置方式

  • step 1

在你的springboot应用的pom.xml中增加如下配置

                 com.spotify                docker-maven-plugin                0.4.13                                                        niugang/springboot:3.0                                        java                                        ["java", "-jar", "/${project.build.finalName}.jar"]                                                                                                    /                                                        ${project.build.directory}                                                        ${project.build.finalName}.jar                                                                           

简要说明一下插件的配置:

  1. imageName:用于指定镜像名称,其中niugang是仓库名称,springboot是镜像名称,3.0是标签名称
  2. baseImage:用于指定基础镜像,类似于Dockerfile中的FROM指令。
  3. entrypoint:类似于Dockerfile的ENTRYPOINT指令。
  4. resources.resource.directory:用于指定需要复制的根目录,${project.build.directory}表示target目录。
  5. resources.resource.include:用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar包文件。
  • step2 进入代码路径下,执行如下命令
mvn clean package docker:build
  • step3 查看镜像
  • step4 启动容器
docker run  -d -p 8088:8088 --name myspringboot niugang/springboot:3.0
  • step5 访问测试

2.2 读取Dockerfile进行构建

在2.1中只需要在pom.xm中配置,执行命令就可以生成docker镜像。在很多时候希望通过Dockerfile生成Docker镜像。

  • step1 在项目src/main/resources目录下新建docker文件夹,在文件夹下新建Dockerfile文件,增加如下内容
FROM java:8MAINTAINER niugang<863263957@qq.com>RUN  mkdir -p /docker/imagesADD demo-0.0.1-SNAPSHOT.jar /docker/imagesENTRYPOINT ["java","-jar","/docker/images/demo-0.0.1-SNAPSHOT.jar"]
  • step2 pom.xml修改为如下
                 com.spotify                docker-maven-plugin                0.4.13                                                        niugang/springboot:4.0             ${project.basedir}/src/main/resources/docker                                                                                                    /                                                        ${project.build.directory}                                                        ${project.build.finalName}.jar                                                                            

可以看到,不再制定baseImage和entrypoint,而是使用dockerDirectory指定Dockerfile所在路径。即时指定了baseImage和entrypoint也将被忽略。

  • step3 进入代码路径下,执行如下命令
mvn clean package docker:build

查看镜像

docker images
  • step4 启动容器
docker run  -d -p 8088:8088 --name myspringboot niugang/springboot:4.0
  • step5 访问测试

2.3 将插件绑定在某个phase执行

很多场景下,我们有这样的需求,执行例如 mvn clean package 时,插件就自动为我们构建Docker镜像。要想实现这点,我们只需将插件的goal绑定在某个phase即可。

phase和goal可以这样理解:maven命令格式是: mvn phase:goal ,例如 mvnpackagedocker:build 。那么,package和docker都是phase,build则是goal。

  • step1 编辑pom.xml 内容如下
                com.spotify                docker-maven-plugin                0.4.13                                                         build-images                       package                                                  build                                                                                                                 niugang/springboot:5.0                    ${project.basedir}/src/main/resources/docker                                                                                                    /                                                        ${project.build.directory}                                                        ${project.build.finalName}.jar                                                                         
  • step2进入代码路径下,执行如下命令
mvn clean package
  • step3 查看镜像

由配置可知,我们只需添加如下配置:

      build-image    package          build      

就可将插件绑定在package这个phase上。也就是说,用户只需执行 mvn package ,就会自动执行 mvn docker:build 。当然,读者也可按照需求,将插件绑定到其他的phase。

springboot获取resources路径_Docker构建SpringBoot应用相关推荐

  1. springboot 获取项目路径_怎样学习 SpringBoot

    学习 SpringBoot 需要做哪些准备? IDE:IDEA 基础工具:JDK1.8.Maven SpringBoot 背景介绍 什么是 SpringBoot Spring Boot是 Spring ...

  2. springboot获取项目路径_springboot学习

    1. Thymeleaf语法详解-字符串操作 (1) th:text的作用是什么? Html中输出的值 (2) th:value的作用是什么? 可以放置到inputvalue标签中的值 (3) 什么是 ...

  3. springboot获取文件路径

    1 this.getClass().getResource("/static/index.html").getPath() 注意:this.getClass().getResour ...

  4. Java SpringBoot 获取项目路径

    String path = ResourceUtils.getURL("classpath:").getPath();

  5. Dockerfile构建Springboot镜像

    Dockerfile构建Springboot镜像 文章目录 Dockerfile构建Springboot镜像 简介 实例演示 前期准备 Docker环境 Springboot项目 Dockerfile ...

  6. springboot获取静态图片路径_Springboot通过图片路径形式获取图片

    Springboot通过图片路径形式获取图片 一致以来都是用 http://127.0.0.1:8888/getPhoto?imgUrl=1.jpg 的形式获取数据,今天突然要 http://127. ...

  7. docker简单介绍、安装使用、常用命令、docker构建springboot项目、k8s安装

    docker简单介绍 docker的意义 把事情简单化 Docker友好的基于CLI的工作流使各种技能水平的开发人员都可以访问构建,共享和运行容器化应用程序. 快速移动 从单个软件包安装即可在几分钟内 ...

  8. springboot+thymeleaf访问绝对路径图片、springboot配置虚拟路径

    springboot项目默认的资源放在static文件夹下面,如图片.样式.js等等(当然也可以通过放在resources.META-INF等文件夹下面,不过有时候也需要配置一下),但是如果我们的图片 ...

  9. SpringBoot获取Ip并解析地址,Docker部署 (ip2region.xdb)

    这里写自定义目录标题 SpringBoot获取Ip并解析地址,Docker部署 (ip2region.xdb) 流程 1. 引入依赖 2.获取IP工具类 3.解析IP地址工具类 SpringBoot获 ...

最新文章

  1. linux系统定时检查网络状态python脚本
  2. 算法打卡39:喷水装置
  3. 蛤玮学计网 -- 简单的判断ip
  4. The Definitive Guide to SWT and JFace 目录
  5. windows7下面sublime中使用virtualenv切换python版本并运行
  6. 计算机毕业设计(18)java毕设作品之旅游景区景点售票购票系统
  7. gcc怎么编写c语言程序,gcc如何编译C语言程序
  8. php 固定表头,固定表头和首列的表格
  9. 计算机视觉相关公开数据集(免费下载)
  10. 零基础入门STM32编程(一)
  11. 那个程序员的 Linux 常用软件清单 | Linux 工具篇
  12. cocos2dx报错OpenGL error 0x0501
  13. .bat脚本初体验——使用批处理bat清洗文件名
  14. 元编程: is_floating_point<Tp>
  15. 能自动摊铺施工的公路滑模机多少钱一台
  16. 《软件工程导论》考研复试整理
  17. Permissions 0777 for ‘/home/***/.ssh/id_rsa‘ are too open.
  18. 水星路由服务器无信号,水星路由器MW326R没有WiFi信号了怎么回事?【图解】
  19. 相信技术的力量 - RSAC 2020 (2)
  20. dotnetbar-SuperTabControl禁止调整顺序

热门文章

  1. 交换机端口mtu值最大_大中型监控系统如何正确选择交换机
  2. ubuntu 远程访问mysql_Ubuntu下远程访问MySQL数据库
  3. Apache Dubbo 高危漏洞通告
  4. 阿里云盘又送福利啦?空间大时间长,不要犹豫快上车!
  5. 字节跳动再扩招1000人,招聘要求让人窒息
  6. 皮一皮:最头铁的汪峰...
  7. 每日一皮:这个食堂好...
  8. 每日一皮:两个实习生的结对编程...
  9. 面试官,别再问高并发了!
  10. 听过TB、PB级大数据,ZB级的大数据探索与应用实践是怎么样的?【附PPT】