文章目录
前言
在现代软件开发流程中,借助 WSL2(Windows Subsystem for Linux 2)搭建稳定的 Linux 运行环境,搭配 Docker 进行高效的容器化管理,再结合 IDEA 这一强大的集成开发工具,能够构建出一套流畅且高效的开发体系。从项目的初始开发阶段,在 IDEA 中进行代码的编写与调试,利用 WSL2 提供的类 Linux 环境,充分发挥各类开源工具和库的优势;到通过 Docker 将开发成果及其依赖项打包成标准化的镜像,实现应用的可移植性和环境一致性;最后将打包好的 Docker 镜像发布到指定的镜像仓库或目标服务器,完成整个从开发到部署的闭环流程。这一系列技术的协同运用,不仅能显著提升开发效率,还能有效降低因环境差异导致的部署问题,确保项目的顺利交付。
一、WSL修改默认安装目录到其他盘
当前,WSL 默认安装在 C 盘。在系统持续使用的过程中,它会不断占用 C 盘空间。随着占用空间逐渐增多,C 盘面临爆满的风险,这不仅会导致系统运行速度变慢,还可能引发一系列不稳定因素,甚至造成系统崩溃。一旦系统崩溃,存储在 C 盘的 WSL 相关数据也将面临丢失风险,给用户带来极大的困扰。
因此,在正式使用 WSL 前,我们可将其打包并迁移至其他磁盘。这一举措不仅能有效防止 C 盘因空间不足而出现问题,确保系统稳定运行,还能避免因系统故障导致 WSL 数据丢失,让我们在使用 WSL 时更加安心、便捷 。
# 在Windows PowerShell中输入命令:
# 1.查看WSL发行版本
wsl -l --all -v
# 2.导出分发版为tar文件到d盘
`wsl --export Ubuntu-22.04 e:\wsl\wsl-ubuntu22.04.tar` #Ubuntu-22.04修改成你现在的发行版名称
# 3.注销当前分发版
wsl --unregister Ubuntu-22.04 ##Ubuntu-22.04修改成你现在的发行版名称
# 4.重新导入并安装WSL在e:\wsl\wsl-ubuntu22.04(可以修改成你自己想要的目录)
wsl --import Ubuntu-22.04 e:\wsl\wsl-ubuntu22.04 e:\wsl\wsl-ubuntu22.04.tar --version 2
# 5.设置默认登陆用户为安装时用户名
ubuntu2204 config --default-user huge #huge 替换为自己的用户名
# 6.删除tar文件(可选)
del e:\wsl\wsl-ubuntu22.04.tar
查看导出导入目录下如下图确认没问题
这里注意的是有多个子系统的要设置默认启动的linux子系统
# 在Windows PowerShell中输入命令:
# 1.查看WSL发行版本
wsl -l --all -v
# 2.显示安装的全部子系统
wslconfig /list
# 将Ubuntu-22.04版设为默认
wslconfig /setdefault Ubuntu-22.04
至此WSL修改默认安装目录已经完成可以启动试试
二、 docker镜像源的设置
#在ubuntu 中执行
sudo vi /etc/docker/daemon.json
添加内容或修改
#这些地址未必能使用 ,请自行搜索国内可用的镜像地址
{
"registry-mirrors": [
"https://docker-0.unsee.tech",
"https://docker-cf.registry.cyou",
"https://docker.1panel.live"
]
}
然后重启docker
#在ubuntu 中执行
sudo systemctl daemon-reload
sudo systemctl restart docker
#查看是否成功
sudo docker info
三、intellij idea 中使用docker
1.开启Docker的远程访问
编辑docker.server文件
#在ubuntu 中执行
sudo vi /usr/lib/systemd/system/docker.service
找到 [Service] 节点的ExecStart 属性,直接注释原有内容 添加以下内容
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
修改完成 点击 Esc 输入 :wq 保存退出
重启docker
#在ubuntu 中执行
sudo systemctl daemon-reload
sudo systemctl restart docker
2.安装配置idea的docker插件
安装docker插件
设置docker插件
设置成功显示如下图
到目前为止,我们已经顺利完成了 IntelliJ IDEA 中 Docker 插件的安装与配置工作。这一关键步骤为后续的开发流程奠定了坚实基础。接下来,我们就能够正式开启代码编写工作,并将编写好的代码高效地打包至 WSL(Windows Subsystem for Linux)中的 Docker 容器里,从而推动整个开发进程顺利迈向下一步,在容器化的环境中进行更便捷、更高效的项目构建与部署 。
3.IEDA工程打包docker镜像
接下来,舞台的聚光灯将聚焦在一位至关重要的 “角色”——docker-maven-plugin 身上。
docker-maven-plugin 作为一款强大的 Maven 插件,宛如一位技艺精湛的工匠,为开发者打通了从 Maven 项目到 Docker 镜像构建与推送至远程仓库的高效通道。借助它,开发者无需繁琐的手动操作,就能轻松地将项目转化为可部署的 Docker 镜像。
在实际运用中,开发者只需在 pom.xml 文件里细致地配置诸如基础镜像、入口点、命令等关键信息。此时,docker-maven-plugin 便会像一位智能助手,自动生成精准的 Dockerfile,并有条不紊地执行镜像构建流程。这一系列自动化操作,极大地简化了原本复杂的镜像构建过程,为期望将 Java 服务封装进容器的开发者们带来了前所未有的便利。从此,开发者们能够更加专注于业务逻辑的实现,而无需为繁琐的镜像构建细节而烦恼,显著提升了开发效率与项目的部署速度。
项目pom.xml 文件的 … 增加配置
<!-- docker打包插件 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.12</version>
<!--将插件绑定在某个phase执行-->
<executions>
<execution>
<id>build-image</id>
<!--用户只需执行mvn package ,就会自动执行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!--指定生成的镜像名,这里是我们的作者名+项目名-->
<imageName>${project.artifactId}</imageName>
<!--指定标签 这里指定的是镜像的版本,我们默认版本是latest-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!--指定基础镜像jdk1.8-->
<baseImage>openjdk</baseImage>
<!-- <baseImage>openjdk:8u312-slim</baseImage>-->
<!--镜像制作人本人信息 -->
<maintainer>[email protected]</maintainer>
<!--切换到ROOT目录-->
<workdir>/ROOT</workdir>
<!--查看我们的java版本-->
<cmd>["java", "-version"]</cmd>
<!--${project.build.finalName}.jar是打包后生成的jar包的名字-->
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<!--指定远程 docker api地址 http://ip:port 与 tcp://ip:port 相同的ip端口-->
<dockerHost>${docker.host}</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>
然后运行打包命令
查看docker 发现已经有了打包好的镜像了
4.IEDA的docker中运行镜像
再查看容器情况发现我们的应用已经成功启动
四,总结
在这篇文章里,我们深入且细致地讲解了如何借助 WSL2、Docker 和 IDEA,有条不紊地完成从开发到发布的全流程操作。相信当你跟随我们的思路,完整地了解并实践了这一过程后,心中或许会产生这样的疑问:既然已经掌握了这种方式,那 Docker Desktop 是不是可以弃用了呢?
事实上,Docker 的优势远超你目前所接触到的这些。随着使用的深入,你会惊喜地发现,它蕴含着众多既新奇有趣又极具实用性的功能,一旦亲身体验,很容易就会对其产生依赖。感兴趣的朋友不妨自行展开探索,去挖掘 Docker 更多潜藏的价值。而我,接下来计划投入时间与精力,撰写一篇关于 Docker 私有仓库推送拉取以及运维实施方面的文章。在后续的内容中,我将毫无保留地分享在搭建和管理 Docker 私有仓库过程中的宝贵经验与实用技巧,助力运维工作更加高效、稳定地开展,敬请期待!