Linux+Docker+SpringBoot+IDEA一键自动化部署的详细步骤

作者:梦想blog 时间:2023-08-12 15:25:39 

Linux+Docker+SpringBoot+IDEA一键自动化部署的步骤

记录从打包到服务器配置上线全流程

安装docker

详细步骤请戳这里

用yum源安装用yum源安装
查看是否已安装docker列表

yum list installed | grep docke

安装docker

yum -y install docker

-y表示不询问安装,直到安装成功,安装完后再次查看安装列表

开放2375端口,开启远程访问

vim /usr/lib/systemd/system/docker.service

这行:

ExecStart=/usr/bin/dockerd-current \

替换为:

ExecStart=/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \

重新加载docker配置


systemctl daemon-reload // 1,重新加载配置文件
systemctl restart docker // 2,重启docker

查看端口是否开启

netstat -nptl

直接curl看是否生效

curl http://127.0.0.1:2375/version

虽然开放此端口打包程序很方便,但是会导致一些安全问题,因此 可以限制访问IP来解决,在云服务器中设置安全组即可

IDEA链接docker

第一步,远程链接docker:

Linux+Docker+SpringBoot+IDEA一键自动化部署的详细步骤

成功后可见:

Linux+Docker+SpringBoot+IDEA一键自动化部署的详细步骤

打镜像包

大致流程如下,采用maven绑定的方式进行打包镜像,然后根据该镜像建立一个docker容器,启动容器,即可
首先我们先创建一个DockerFile,路径参考:

Linux+Docker+SpringBoot+IDEA一键自动化部署的详细步骤

DockerFile文件内容如下:


FROM java:8
VOLUME /tmp
#docker-day1-1.0.jar为项目打包为jar包的名字,app.jar为别名
ADD docker-day1-1.0.jar app.jar
#运行的时候对外提供的端口默认是8090,即便你在这里声明了3000也不会改变默认的端口8090
EXPOSE 8090
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

然后在pom文件里面配置docker-maven-plugin插件,在plugins节点下,添加一个plugin,内容如下:


<!--使用docker-maven-plugin插件-->
 <plugin>
 <groupId>com.spotify</groupId>
 <artifactId>docker-maven-plugin</artifactId>
 <version>1.0.0</version>
 <!--将插件绑定在某个phase执行-->
 <executions>
  <execution>
  <id>build-image</id>
  <!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build-->
  <phase>package</phase>
  <goals>
   <goal>build</goal>
  </goals>
  </execution>
 </executions>
 <configuration>
  <!--指定生成的镜像名-->
  <imageName>jason/${project.artifactId}</imageName>
  <!--指定标签-->
  <imageTags>
  <imageTag>latest</imageTag>
  </imageTags>
  <!--指定 Dockerfile 路径-->
  <dockerDirectory>${project.basedir}/src/main/resources/docker</dockerDirectory>
  <!--指定远程 docker api地址-->
  <dockerHost>http://58.87.113.58:2375</dockerHost>
  <!--这里是复制 jar 包到 docker 容器指定目录配置 -->
  <resources>
  <resource>
   <targetPath>/</targetPath>
   <!--jar 包所在的路径 此处配置的 即对应 target 目录-->
   <directory>${project.build.directory}</directory>
   <!--需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名-->
   <include>${project.build.finalName}.jar</include>
  </resource>
  </resources>
 </configuration>
 </plugin>

配置完成,现在使用maven package,即可将我们的jar包打成docker镜像,可以使用idea右侧的快捷方式,
也可以使用命令:

mvn package

完成后,我们会在这里看见我们刚打好的镜像包

Linux+Docker+SpringBoot+IDEA一键自动化部署的详细步骤

运行该镜像,需要使用到docker的容器来承载它,我们右键创建

Linux+Docker+SpringBoot+IDEA一键自动化部署的详细步骤

设置镜像名称,设置IP映射即可,我这里项目的port是8090,容器对外开放设置为8091

Linux+Docker+SpringBoot+IDEA一键自动化部署的详细步骤

设置完之后我们点击Run,访问我们提前写好的测试接口,测试结果

Linux+Docker+SpringBoot+IDEA一键自动化部署的详细步骤

那么问题来了,我们开发的时候改完代码就需要发布一次,不可能每次都先点一下package然后再run是吧,这样多捞啊,我们把这两个步骤串起来,不就行了吗
继续编辑我们刚刚的配置,添加一个maven步骤即可

Linux+Docker+SpringBoot+IDEA一键自动化部署的详细步骤

那么我们再次修改代码后,再点击Run,即可在线上看到最新的程序了,至此一个简单的一键部署就完成了

Linux+Docker+SpringBoot+IDEA一键自动化部署的详细步骤

附:java源码下载

来源:https://blog.csdn.net/z1353095373/article/details/106874050

标签:Linux,Docker,SpringBoot,IDEA,一键自动化部署
0
投稿

猜你喜欢

  • SpringBoot配置Actuator组件,实现系统监控

    2021-10-27 07:46:48
  • Java中CyclicBarrier 循环屏障

    2021-11-24 08:22:24
  • AsyncTask官方文档教程整理

    2023-07-31 20:25:08
  • C# wpf 通过HwndHost渲染视频的实现方法

    2023-08-30 03:33:35
  • 浅析Spring Boot单体应用熔断技术的使用

    2022-05-10 02:37:08
  • Java SpringBoot高级用法详解

    2021-07-03 18:27:09
  • 完美解决c# distinct不好用的问题

    2023-02-13 11:22:53
  • Android自定义wheelview实现滚动日期选择器

    2021-11-22 16:04:19
  • C#统计字符串里中文汉字个数的方法

    2022-05-12 21:47:10
  • java中struts2实现文件上传下载功能实例解析

    2022-03-31 06:47:38
  • Android 设置应用全屏的两种解决方法

    2023-05-07 01:27:50
  • React Native学习之Android的返回键BackAndroid详解

    2023-04-19 14:15:28
  • C#通过重写Panel改变边框颜色与宽度的方法

    2021-07-09 05:57:52
  • 实例分析java对象中浅克隆和深克隆

    2023-01-07 07:48:20
  • C语言实现通讯录小项目

    2022-10-05 07:33:36
  • Android中通知Notification使用实例(振动、灯光、声音)

    2021-09-28 20:00:01
  • C# 实现颜色渐变窗体控件详细讲解

    2021-12-31 07:10:28
  • Spring Cloud Gateway(读取、修改 Request Body)的操作

    2023-11-09 19:25:46
  • c#字符串编码问题的处理解决

    2021-07-06 13:47:49
  • C#关闭指定名字进程的方法

    2021-11-23 23:59:42
  • asp之家 软件编程 m.aspxhome.com