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:
成功后可见:
打镜像包
大致流程如下,采用maven绑定的方式进行打包镜像,然后根据该镜像建立一个docker容器,启动容器,即可
首先我们先创建一个DockerFile,路径参考:
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
完成后,我们会在这里看见我们刚打好的镜像包
运行该镜像,需要使用到docker的容器来承载它,我们右键创建
设置镜像名称,设置IP映射即可,我这里项目的port是8090,容器对外开放设置为8091
设置完之后我们点击Run,访问我们提前写好的测试接口,测试结果
那么问题来了,我们开发的时候改完代码就需要发布一次,不可能每次都先点一下package然后再run是吧,这样多捞啊,我们把这两个步骤串起来,不就行了吗
继续编辑我们刚刚的配置,添加一个maven步骤即可
那么我们再次修改代码后,再点击Run,即可在线上看到最新的程序了,至此一个简单的一键部署就完成了
附:java源码下载
来源:https://blog.csdn.net/z1353095373/article/details/106874050


猜你喜欢
- 一个让人赏心悦目的界面对软件来说非常重要,因此图形图像资源也显得非常重要。本讲就要谈一谈Android中处理图形图像的最重要的一个类Draw
- C# 7 里面的Pattern Mathing 更多内容请查看官方文档:https://docs.microsoft.com/zh-cn/d
- 本文实例为大家分享了java实现打砖块小游戏的具体代码,供大家参考,具体内容如下源码共包含两个文件文件1:play_zhuankuai.ja
- 今天无意中发现一个圆形进度,想想自己实现一个,如下图:基本思路是这样的:1.首先绘制一个实心圆2.绘制一个白色实心的正方形,遮住实心圆3.在
- 我这里 shiro 并没有集成 springMVC,直接使用 ini 配置文件。shiro.ini[main]# Objects and t
- 字符流是针对字符数据的特点进行过优化的,因而提供一些面向字符的有用特性,字符流的源或目标通常是文本文件。 Reader和Writer是jav
- hello, everyone. Long time no see. 本期文章,我们主要讲解一下二叉树的相关概念,顺便也把搜索二叉树(也叫二
- public static IPAddress GetHostIP(){ &nbs
- @Transactional 内部调用例子 🌰在 Spring 的 AOP 代理下,只有目标方法由外部调用,目标方法才由 Spring 生成
- JVM内部结构图Java虚拟机主要分为五个区域:方法区、堆、Java栈、PC寄存器、本地方法栈。下面来看一些关于JVM结构的重要问题。1.哪
- 这篇文章主要介绍了Java多态中动态绑定原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以
- 本文我将要介绍一下mybatis的框架原理,以及mybatis的入门程序,实现用户的增删改查,她有什么优缺点以及mybatis和hibern
- springboot 启动排除某些bean的注入问题:最近做项目的时候,需要引入其他的jar。然后还需要扫描这些jar里的某些bean。于是
- 本文讲述在mybatis中如何使用ognl表达式实现动态组装sql语句新建Users实体类:public class Users { &nb
- 本文实例为大家分享了java实现通讯录管理系统的具体代码,供大家参考,具体内容如下完成项目的流程:1.根据需求,确定大体方向 2.功能模块分
- 工厂方法模式,往往是设计模式初学者入门的模式,的确,有人称之为最为典型最具启发效果的模式。android中用到了太多的工厂类,其中有用工厂方
- 实践过程效果代码public partial class FrmGetColor : Form{ public F
- 最近在做学校的课程设计,java编程需要用到对话框弹出,第一反应是js中的alert和confirm,java的话瞬间懵,查阅学习总结如下,
- Java作为一面向对象的语言,具备面向对象的三大特征——继承,多态,封装。继承顾名思义,继任,承接,传承的意思。面向对象的语言有一个好处,就
- 目录springboot autoconfig的一些实验SpringBoot autoconfig部分注解说明SpringBoot auto