Administrator
发布于 2024-03-21 / 366 阅读 / 0 评论 / 0 点赞

IDEA +docker实现springboot打包docker镜像

IDEA +docker实现springboot打包docker镜像

前言

使用springboot开发,通常打包成一个jar包进行部署,随着容器化部署越来越流行,通常服务器环境中都是使用docker进行服务的部署和管理,这也要求开发将jar打包成docker镜像进行发布。如果本地不想安装docker desktop,可以借助远程的开发环境中的服务器进行docker镜像打包和测试。本文就简单介绍一下如何使用IDEA 配合远程服务器中的docker将springboot应用打包成docker镜像并部署到远程服务器中。

环境介绍:
开发工具:IntelliJ IDEA 2022.2.4
远程服务器:centos7.6
docker版本:24.0.5
Spring-boot版本: 3.2.3
jdk版本:17

环境配置

docker配置

修改 “/lib/systemd/system/docker.service”文件:

vi /lib/systemd/system/docker.service
##找到"ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock"
##在最后添加"-H tcp://0.0.0.0:2375",如下
.....
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
.....

修改完成后保存,并执行命令重启docker配置和服务:

systemctl daemon-reload 
systemctl restart docker 

注意:这种配置由于没有任何认证限制,只能用于开发环境!只能用于开发环境!只能用于开发环境!

IDEA配置

先安装docker插件,setting->Plugins,IntelliJ IDEA 2022.2.4已经默认安装了,只需要确认即可:

IDEA_docker插件安装

确认docker插件已安装,配置docker远程连接,setting->Build->Docker

IDEA_docker插件配置

配置完成应该可以在Services中找到远程docker服务,可以启动并管理远程的docker服务:

IDEA_docker插件使用

Dockerfile配置

为了尽量不在原工程中进行修改,我们只写Dockerfile文件,不用pom插件,不改动pom文件。在项目根目录中创建Dockerfile文件,也就是跟pom文件同级的目录下,填下如下内容:

#采用openjdk:17-jdk-alpine作为基础镜像
FROM openjdk:17-jdk-alpine

#时区配置
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#自定义一个工作目录:/data
WORKDIR /data

EXPOSE 8080
#拷贝jar到应用目录下,app为自定义的目录名称
COPY ./target/xxx-0.0.1-SNAPSHOT.jar ./app/

#在data目录下启动 ./app/xxx-0.0.1-SNAPSHOT.jar
CMD java -jar ./app/xxx-0.0.1-SNAPSHOT.jar

创建完成后,打开Dockerfile文件,找到配置按钮点击配置Dockerfile的运行信息:

Dockerfile打开配置

配置信息包含镜像名称、服务、镜像tag、运行的容器名称、运行容器的选项配置:

Dockerfile配置

运行

只打包镜像

在配置完成的Dockerfile文件上点击运行按钮,选择“Build Image for xxx”开始运行,有时会出现连接不上docker service的报信息,这时需要关闭docker service再重新打开:

build-image

打包日志会显示在services中,并且运行完成后可以打开dashboard查看镜像信息,dashboard中还提供了创建容器和推送镜像仓库的功能:

ImageInfo

打包镜像并创建容器

由于配置Dockerfile的时候添加了"run"配置信息,点击Dockerfile运行按钮,选择“Run xxx"开始运行:

build-image-and-run

打包日志和运行日志会显示在services中,并且运行完成后可以打开dashboard查看容器信息,dashboard中还提供了容器的操作按钮:重启、停止、命令行进入容器内部:

containerInfo

总结

使用IDEA插件来讲springboot打包成镜像的方法,对项目工程的入侵较小,基本上只需要添加Dockerfile文件即可。当然这种方式适合较小的团队或者个人开发时候使用。如果是较大的团队或者想要实现CI/CD则可以通过maven插件配合jenkins来实现,流程上跟本次的类似,用maven插件替代IDEA插件,写一个Dockerfile,执行的操作交给Jenkins。


评论