暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

idea中使用springboot+docker热部署项目(包括多模块项目)

Java技术学习笔记 2020-07-27
1264

1.简单的在CentOS中部署docker,可以看看之前的文章:centos中安装docker

2.新建一个可以运行的springboot项目

3.在项目的main目录下新建一个docker目录;如果是多模块项目时,在application所在的项目目录中建。

4.在setting的plugins中添加“docker”插件,并链接上CentOS上的docker(其中注意在防火墙中增加端口,还是不能连接时,需要查看你添加的是否在-A INPUT -j REJECT --reject-with icmp-host-prohibited 之前)

5..在docker目录下新建Dockerfile文件

FROM openjdk:8-jdk-alpine
# 上面新建docker文件夹是为了避免在这里写路径
ADD *.jar app.jar
# []中的内容是在docker中执行的命令组装
ENTRYPOINT ["java","-jar","/app.jar"]
Dockerfile内容详解可以参照:
https://blog.csdn.net/yanzi920403/article/details/103977667

6.新建启动入口

Dockerfile:项目中Dockerfile文件所在的目录

Image tag : 指定镜像名称和tag,比如docker-demo

Container:对应的container名称,可以随意取

Bind ports : 绑定宿主机端口到容器内部端口。格式为[宿主机端口]:[容器内部端口],注意linux系统是否放开对应的端口

Bind mounts : 将宿主机目录挂到到容器内部目录中,这里配置的/home/developer/app/logs/是项目打印日志,这个可以在application.xml中日志输出时配置

7.在包含启动项application的pom增加docker部署内容(其中包含将部署生成的jar包copy到docker文件夹中,注意部署配置jar的位置;这里要是配置了finalName会导致找不到包,因为下面代码中配置了copy的file模式)

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.hzy.docker</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<configuration>
<tasks>
<copy todir="src/main/docker" file="target/${project.artifactId}-${project.version}.${project.packaging}"></copy>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

8.执行部署,安装1-2的顺序执行,执行完之后能看到项目正常启动,就说明成功了

9.在CentOS中查询执行情况,就时上面ENTRYPOINT 中的内容拼接

[root@localhost logs]# ps -ef | grep java
root 32676 32657 1 06:37 pts/0 00:00:40 java -jar /app.jar
root      33413  22303  0 07:38 pts/1    00:00:00 grep --color=auto java

10.重新更新部署时,需要先mvn clean--mvn install的流程

11.测试项目存放连接:

// 单模块
https://gitee.com/hzy100java/docker-demo.git
// 多模块
https://gitee.com/hzy100java/docker-mast.git
文章转载自Java技术学习笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论