> 技术文档 > springboot项目,利用docker打包部署_docker打包springboot项目

springboot项目,利用docker打包部署_docker打包springboot项目


 Windows + WSL2 + Docker Desktop 部署 SpringBoot 项目指南

(没有安装docker的,如果是windows家庭中文版的,可以看我上一篇帖子:windows家庭版安装docker和redis-CSDN博客

本教程将说明如何在 Windows 系统 下,使用 WSL2 + Docker Desktop 对 IDEA 开发的 SpringBoot 项目 进行 Docker 打包、镜像构建、容器运行 的全流程操作。

1. 环境准备

(1) 确保已安装以下工具

工具 安装方式 验证命令 WSL2 微软官方文档 wsl -l -v Docker Desktop 官网下载 docker --version JDK 17+ Oracle JDK java -version Maven Apache Maven mvn -v IntelliJ IDEA JetBrains 官网 -

(2) 配置 Docker 使用 WSL2

  1. 打开 Docker Desktop → Settings → General → Use WSL 2 based engine(勾选)。

  2. Resources → WSL Integration → 启用你的 WSL 发行版(如 Ubuntu-20.04)。

2. 项目准备(IDEA 操作)

(1) 创建 SpringBoot 项目

1.File → New → Project → Spring Initializr

 2.填入如下图信息。

填入项目名字:docker-demo ,选择java语言,Maven项目,填入group和artifact,JDK选择17,java17,jar包点击next下一步

3.选择Spring Web,点击创建。

 

然后我们在idea 中配置好maven路径和jdk信息后,开始编写一个简单的接口。

鼠标右键,New->Java Class,填入 controller.DockerController

在DockerController中编写如下代码,输出hello,docker!

@RestControllerpublic class DockerController { @GetMapping(\"/hello\") public String hello(){ return \"hello,docker!\"; }}

在DockerDemoApplication中编写如下代码:

@SpringBootApplicationpublic class DockerDemoApplication { public static void main(String[] args) { SpringApplication.run(DockerDemoApplication.class, args); }}

本地运行测试mvn spring-boot:run,访问 http://localhost:8080/hello 确认正常。

3. 添加 Docker 支持

(1) 在项目中创建 Dockerfile

在 项目根目录 新建 Dockerfile(无后缀),内容如下:

 输入Dockerfile回车

# 第一阶段:构建阶段(Builder),用 Maven 下载依赖、打包应用FROM maven:3.9.6 AS builderWORKDIR /build# 覆盖容器内的 Maven settings.xml(配置镜像、仓库等)COPY settings.xml /root/.m2/settings.xml# 复制 pom.xml 先下载依赖,利用 Docker 缓存加速后续构建COPY pom.xml .RUN mvn dependency:go-offline -Dmaven.repo.local=/root/.m2/repository# 复制项目源码,执行打包(假设是 Spring Boot,生成 jar)COPY src ./srcRUN mvn package -Dmaven.repo.local=/root/.m2/repository -DskipTests# 第二阶段:运行阶段(Runner),基于 OpenJDK 构建轻量运行镜像FROM openjdk:17-jdk-slimWORKDIR /app# 从构建阶段拷贝打包好的 jar 到运行镜像COPY --from=builder /build/target/docker-demo-0.0.1-SNAPSHOT.jar app.jar# 暴露端口(与 Spring Boot 配置的 server.port 一致)EXPOSE 8080# 启动命令ENTRYPOINT [\"java\", \"-jar\", \"app.jar\"]

 📌 注意your-project-name.jar 要替换成你的实际 JAR 包名(如 demo-0.0.1-SNAPSHOT.jar)。通常是pom中的docker-demo 0.0.1-SNAPSHOT这两个参数拼接起来。如果实在不行就打包一下,看看target目录下实际的jar名字。(打包方法:运行  mvn clean package,然后到项目的target目录看下生成的jar文件名字。或者点击idea右侧的maven,在lifecycle里面先点击clean,运行完后点击package)

4. 构建 Docker 镜像

(1) 在 WSL2 终端操作

  1. 打开 WSL2(比如 Ubuntu):

    • 按 Win + R,输入 wsl 进入 WSL 终端。或者直接点击图标打开。

  2. 进入项目目录(假设项目在 Windows 的 D:\\projects\\demo):

    cd /mnt/d/projects/demo 

           (WSL 通过 /mnt/ 访问 Windows 文件系统。)

mvn clean package -DskipTests

 打包的时候,我们遇到如下问题:

就是我们的项目是jdk17的,docker里面没有。我们拉一下17的版本:

docker pull openjdk:17

 

 安装好后,再次打包还是报错:

这时执行 mvn -v 显示maven版本是3.6.3,不支持jdk17。 

那么我们拉取下maven新版本:

docker pull maven:3.9.6

这时候在执行如下打包命令:

# 构建镜像(在 Dockerfile 目录执行)docker build -t myapp:1.0 . 

注意这里如果拉取依赖比较漫长的话,一定一定要配置下从阿里云下载依赖。

 注意看上图中并不是从阿里云下载的,所以会很漫长。我们修改下:

在项目根目录创建settings.xml文件:

   aliyun Aliyun Mirror https://maven.aliyun.com/repository/public central  

这样就会从阿里云下载,速度很快。

 再次执行:

docker build -t myapp:1.0 . 

 

 如上可以看到成功了。

然后我们执行查看镜像命令:

docker images

如上图可以看到myapp这个镜像。

然后我们运行:

docker run -d -p 8080:8080 myapp:1.0 

执行成功如下:

同时我们在docker desktop界面也可以看到这个运行实例:

 然后我们访问下http://localhost:8080/hello

输出成功!