IDEA配置Docker一键部署SpringBoot项目(企业级做法)

Docker一键部署SpringBoot项目

  • 前言
  • 一、开启Linux的Docker远程访问
    • 1.1 安装vim工具:
    • 1.2 修改`daemon.json`的配置:
    • 1.3 加入配置:
    • 1.4 重新读取配置文件,并重启docker服务
  • 二、IDEA安装Docker插件
  • 三、IDEA配置Docker
  • 四、SpringBoot整合Docker配置
    • 4.1 安装pom依赖
    • 4.2 maven打包
    • 4.3 启动镜像
    • 4.3 扩展操作
  • 五、可能出现的问题
  • 总结


前言

怎么部署 Spring Boot?打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过这些都过时了,容器化部署应该是目前的主流方案。
如何将 Spring Boot 项目一键打包到远程 Docker 容器,然后通过运行一个镜像的方式来启动一个 Spring Boot 项目,今天我们就来了解一下,真的很秀哦。


一、开启Linux的Docker远程访问

1.1 安装vim工具:

yum install vim -y

1.2 修改daemon.json的配置:

vim /etc/docker/daemon.json

1.3 加入配置:

 "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
{
     
  "":"", // 如果这里有其他配置,记住逗号不能忘,json字符串格式配置
  "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
}

1.4 重新读取配置文件,并重启docker服务

然后让docker重新读取配置文件,并重启docker服务:

systemctl daemon-reload
systemctl restart docker
添加指定需要开放的端口:
firewall-cmd --zone=public --add-port=2375/tcp --permanent
重载入添加的端口:
firewall-cmd --reload
查询指定端口是否开启成功:
firewall-cmd --query-port=2375/tcp

在这里插入图片描述
curl查看是否生效:

curl http://127.0.0.1:2375/info

二、IDEA安装Docker插件

高版本的IDEA默认给我们安装了Docker了。

IDEA配置Docker一键部署SpringBoot项目(企业级做法)_第1张图片
如果是低版本的IDEA,可以点击 File->Settings->Plugins->Browse Repositories 搜索docker安装。

三、IDEA配置Docker

配置docker,连接docker服务。
IDEA配置Docker一键部署SpringBoot项目(企业级做法)_第2张图片
输入IP+端口,测试连接成功,确定应用之后,自动弹出Docker框:
IDEA配置Docker一键部署SpringBoot项目(企业级做法)_第3张图片
也就是在IDEA的sevice任务栏里面可以看到。

测试一下:
在这里插入图片描述
之前的容器,因为重启了docker之后,已经停掉了,那么用以前的启动方式,需要:

docker ps -a
// 然后
docker start 容器ID

IDEA配置好Docker之后,直接右键容器启动,如下:
IDEA配置Docker一键部署SpringBoot项目(企业级做法)_第4张图片

四、SpringBoot整合Docker配置

4.1 安装pom依赖

docker-maven-plugin插件:


<plugin>
    <groupId>com.spotifygroupId>
    <artifactId>docker-maven-pluginartifactId>
    <version>1.0.0version>
    <configuration>
        
        <imageName>${docker.image.prefix}/${project.artifactId}imageName>
        
        <imageTags>
            <imageTag>latestimageTag>
        imageTags>
        
        <baseImage>javabaseImage>
        
        <maintainer>[email protected]maintainer>
        
        <workdir>/ROOTworkdir>
        <cmd>["java", "-version"]cmd>
        <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]entryPoint>

        
        

        
        <dockerHost>http://192.168.31.6:2375dockerHost>

        
        <resources>
            <resource>
                <targetPath>/ROOTtargetPath>
                
                <directory>${project.build.directory}directory>
                
                <include>${project.build.finalName}.jarinclude>
            resource>
        resources>
    configuration>
plugin>

4.2 maven打包

执行命令打包:

mvn clean package docker:build

IDEA配置Docker一键部署SpringBoot项目(企业级做法)_第5张图片

docker images

在这里插入图片描述

4.3 启动镜像

启动镜像:
IDEA配置Docker一键部署SpringBoot项目(企业级做法)_第6张图片

-p 是做端口映射,此时将服务器中的8080端口映射到容器中的8081(项目中端口配置的是8081)端口
Container name: 也可以指定容器名称,也可以不指定

访问测试:

http://192.168.31.6:8080/list

4.3 扩展操作

当执行mvn package的时候:执行mvn clean package docker:build,也就是先clean一下maven,然后再build打包,免去我们手动clean的操作。



<executions>
    <execution>
        <id>build-imageid>
        <phase>packagephase>
        <goals>
            <goal>buildgoal>
        goals>
    execution>
executions>

重新执行mvn clean package docker:build
IDEA配置Docker一键部署SpringBoot项目(企业级做法)_第7张图片
使用mvn package打包构建docker镜像成功后:
IDEA配置Docker一键部署SpringBoot项目(企业级做法)_第8张图片
在这里插入图片描述

docker build或者docker pull的时候,由于新旧镜像同名,旧镜像名称被取消,从而出现仓库名、标签均为none的镜像。这类无标签镜像也被称为虚悬镜像(dangling image) ,可以用下面的命令专门显示这类镜像:
docker images -f dangling=true

在这里插入图片描述
一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除。

docker rmi $(docker images -q -f dangling=true)

最后运行启动测试:
IDEA配置Docker一键部署SpringBoot项目(企业级做法)_第9张图片
在这里插入图片描述
启动测试成功。

五、可能出现的问题

浏览器无法访问网页、2375和8080端口没有对外开放。

1、检查IP是否能ping通
IDEA配置Docker一键部署SpringBoot项目(企业级做法)_第10张图片

2、检查端口号是否开放

telnet xxx 端口号

IDEA配置Docker一键部署SpringBoot项目(企业级做法)_第11张图片

如果出现如上窗口,证明端口已经开放。

如果端口未开放,解决方案:

查询指定端口是否已开:

firewall-cmd --query-port=8080/tcp
提示 yes,表示开启;no表示未开启。

开启防火墙:

查看防火墙状态 systemctl status firewalld
开启防火墙 systemctl start firewalld  
关闭防火墙 systemctl stop firewalld
添加指定需要开放的端口:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
重载入添加的端口:
firewall-cmd --reload
查询指定端口是否开启成功:
firewall-cmd --query-port=8080/tcp
 命令含义:
--zone #作用域
--add-port=8081/tcp  #添加端口,格式为:端口/通讯协议
--permanent  #永久生效,没有此参数重启后失效
移除指定端口:
firewall-cmd --permanent --remove-port=8080/tcp

在这里插入图片描述

IDEA配置Docker一键部署SpringBoot项目(企业级做法)_第12张图片

总结

很轻松的就能够把我们的 Spring Boot 项目发布到远程 Docker 容器中,超级方便。

你可能感兴趣的:(Java系列,docker,java,maven,linux,centos)