一键部署SpringBoot到远程Docker容器
很多小伙伴在生产环境中部署SpringBoot都是通过打包成jar包一键运行,或者达成war包放在Tomcat下运行,而容器化部署应当是目前最主流的方案;
不同于传统的单体应用,微服务由于服务数量众多,在部署的时候出现问题的可能性更大,这时候,使用docker来部署,就能很好地解决这个问题,这也是目前使用较多的方案之一;
今天,笔者会聊一聊如何将SpringBoot项目一键打包到远程docker容器中,然后通过运行镜像的方式启动一个SpringBoot项目;
参考链接:https://mp.weixin.qq.com/s/vSCQLvQBYMYoPhdlO2v3XA
一、准备环境
- Windows10
- IDEA2019
- JDK1.8
- Maven 3.6.0
- CentOS 7
- Docker版本:1.13.1
二、准备工作
1.准备docker
首先要在CentOS 7上安装好Docker,读者可以结合网上教程及下列命令进行安装
1.检查内核版本,必须是3.10及以上
uname -r
2.安装docker
yum install docker
3.输入y确认安装
4.启动docker
systemctl start docker
docker -v(查看docker版本)
Docker version 1.13.1, build 7f2769b/1.13.1
5.设置docker为开机启动
[root@izwz91p7ptv6xnhkarxg4nz admin]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
6.停止docker
systemctl stop docker
Docker安装完成后,我们首先要修改Docker配置,开启允许远程访问Docker的功能,方式如下:
打开/usr/lib/systemd/system/docker.service文件,加入以下内容
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
如下图所示
配置完成后,保存退出,重启docker,命令如下
systemctl daemon-reload
service docker restart
2.准备IDEA环境
IDEA上的准备工作,主要是安装Docker插件,点击
File->Settings->Plugins->在搜索框中查找Docker
如下(这里我已经安装完成,安装完成后需要重启IDEA)
重启完成后,需要配置Docker的远程连接地址,打开
File->Settings->Build,Execution->Deployment->Docker
3.准备项目
这一过程很简单,创建一个Spring Boot项目,引入web模块,创建成功后,再创建一个控制器HelloDockerController
@RestController
public class HelloDockerController {@GetMapping("/hello")public String hello(){return "hello docker!";}
}
4.准备Dockerfile
在根目录下创建一个Dockerfile,目录如下
内容如下
FROM hub.c.163.com/library/java:latest
VOLUME /tmp
ADD target/springboot-docker-demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
注意:
- 考虑到Docker下载镜像较慢,这里使用网易提供的Docker镜像
- 由于Spring Boot运行时需要tmp目录,这里创建一个/tmp目录出来
- 将本地target目录中打包好的jar文件复制一份到/app.jar
- 最后一行配置启动命令,由于我打包好的jar已经成为app.jar,所以启动命令也是启动app.jar
可能出现的错误
这里需要注意第三行,springboot-docker-demo-0.0.1-SNAPSHOT是和pom.xml文件中的项目版本信息一致的
<artifactId>springboot-docker-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
如果不一致会报错
5.配置Maven插件
<plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.2.0</version><executions> <execution><id>build-image</id><phase>package</phase><goals><goal>build</goal></goals></execution></executions><configuration><!--配置主机地址,即linux服务器的地址--><dockerHost>http://120.77.210.227:2375</dockerHost><imageName>javaboy/${project.artifactId}</imageName><imageTags><imageTag>${project.version}</imageTag></imageTags><forceTags>true</forceTags><dockerDirectory>${project.basedir}</dockerDirectory><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources></configuration>
</plugin>
三、打包运行及测试
1.打包
首先要关闭Windows的防火墙,不然在接下来打包的过程中会报错;
然后对项目进行打包,项目会自动生成一个镜像,并上传到Docker容器中,打包方式如下
打包过程较慢,部分打包日志如下
Step 1/4 : FROM hub.c.163.com/library/java:latest---> a001fc27db5a
Step 2/4 : VOLUME /tmp---> Using cache---> f2cf1c73372f
Step 3/4 : ADD target/springboot-docker-demo-0.0.1-SNAPSHOT.jar app.jar---> bfb46e17160a
Removing intermediate container 4e9c620b22a3
Step 4/4 : ENTRYPOINT java -jar /app.jar---> Running in 1602ae202c61---> 7b7d907699d0
Removing intermediate container 1602ae202c61
Successfully built 7b7d907699d0
[INFO] Built javaboy/springboot-docker-demo
[INFO] Tagging javaboy/springboot-docker-demo with 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 56.893 s
[INFO] Finished at: 2019-10-04T09:27:49+08:00
[INFO] ------------------------------------------------------------------------Process finished with exit code 0
打包成功后,可以在docker容器中看到上传的镜像
2.运行测试
2.1方法一
在linux服务器上创建一个该镜像的容器
docker run -d --name javaboy -p 8080:8080 javaboy/springboot-docker-demo:0.0.1-SNAPSHOT
注意:需要开放8080端口
启动之后即可访问容器中的端口了
2.2方式二
注意,打包完成后,IDEA中多了一个Docker选项,如下:
然后右键点击镜像,创建容器
暴露的端口使用Specify即可
2.3测试
一键部署SpringBoot到远程Docker容器相关推荐
- IDEA一键部署 Spring Boot 到远程 Docker 容器,就是这么秀!
不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据我了解,容器化部署应该是目前的主流方案. 微服务不同 ...
- 提升10倍生产力:IDEA远程一键部署SpringBoot到Docker
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 IDEA是Java开发利器,springboot是Java生态中最 ...
- Java 开发提升十倍生产力:idea 远程一键部署 springboot 到 Docker
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:牛人 20000 字的 Spring Cloud 总结,太硬核了~ 作者:陶章好 链接:https://juej ...
- docker php 一键部署_Java开发提升十倍生产力:Idea远程一键部署springboot到Docker
IDEA是Java开发利器,springboot是Java生态中最流行的微服务框架,docker是时下最火的容器技术,那么它们结合在一起会产生什么化学反应呢? 一.开发前准备 1.Docker安装 可 ...
- 一键部署 Spring Boot 到远程 Docker 容器,就是这么秀!
不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...
- 一键部署 Spring Boot 到远程 Docker 容器,就是这么秀
不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...
- docker 打包镜像_Spring Boot2 系列教程(四十一)部署 Spring Boot 到远程 Docker 容器
不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...
- IDEA配置Docker一键部署SpringBoot项目(企业级做法)
Docker一键部署SpringBoot项目 前言 一.开启Linux的Docker远程访问 1.1 安装vim工具: 1.2 修改`daemon.json`的配置: 1.3 加入配置: 1.4 重新 ...
- 【Docker】11、IDEA集成Docker插件实现一键部署SpringBoot项目
日常开发项目的过程中,我们每次需要部署线上的时候,都需要安装一大堆的运行环境,例如:JDK.MySQL.Redis 等,非常花费时间.我们可以使用 Docker 的容器技术,方便快捷地搭建项目启动所需 ...
最新文章
- 网站设计流程图(来源于网络)
- 在 Lua 里 使用 Cocos Studio 导出的 .csb 文件
- 正则匹配没有闭合标签_RegExRX for Mac(多功能正则表达式开发工具)
- python加密与解密_Python加密与解密,pythonCrypt,和
- oracle的基本概念,oracle的基本概念
- NHibernate源码分析开篇
- windows查看linux文件工具,「实用工具」介绍几款Windows系统与Linux服务器传递文件的工具...
- 2 Advanced Read/Write Splitting with PHP’s MySQLnd
- java字段映射成其他字段名称_java字段与数据库字段映射
- 极化SAR图像特征提取与分类方法研究
- LOTO 示波器 两种电流探头的对比实测
- 微信公众号的搭建-第二天-申请公众号并与本地测试服务器绑定
- Podfile语法参考(译)
- matplotlib:图形绘制常用增加修饰和设置参数
- 扣图神器, 用Python 5行代码解决
- 【精品】防止表单重复提交 方法汇总
- shell softech 面料_户外软壳面料及各品牌的技术
- 单片机c语言p1口转弯灯实验,单片机p1口转弯灯实验程序
- 实现所有网站的qq登录返回登录后的cookie信息
- ​万字长文详解文本抽取:从算法理论到实践(附“达观杯”官方baseline实现解析及答疑)...
热门文章
- Hive的HQL语句及数据倾斜解决方案
- 7、em/px/rem/vh/vw区别?
- 【真人手势动画制作软件】万彩手影大师教程 | 去除水印
- Android开发 BaseExpandableListAdapter的使用
- NetLogo 初步认识
- 视频自动播放代码(优酷、搜狐、酷6、土豆等)
- Bzoj4826 [Hnoi2017]影魔
- [CSP-S模拟测试]:影魔(树状数组+线段树合并)
- 震惊!TYPE-C 转OTG(USB2.0传输数据)+PD充电协议芯片
- LibGDX_1.1: LibGDX 跨平台游戏开发框架简介