WSL2 + DOKER +IDEA 开发到发布完整过程(详细步骤,图文并茂)


前言

在现代软件开发流程中,借助 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 私有仓库过程中的宝贵经验与实用技巧,助力运维工作更加高效、稳定地开展,敬请期待!