当前位置: 首页 > news >正文

springboot项目,利用docker打包部署

 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 JDKjava -version
MavenApache Mavenmvn -v
IntelliJ IDEAJetBrains 官网-

(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!

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

在DockerDemoApplication中编写如下代码:

@SpringBootApplication
public 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 builder
WORKDIR /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 ./src
RUN mvn package -Dmaven.repo.local=/root/.m2/repository -DskipTests# 第二阶段:运行阶段(Runner),基于 OpenJDK 构建轻量运行镜像
FROM openjdk:17-jdk-slim
WORKDIR /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中的<artifactId>docker-demo</artifactId> <version>0.0.1-SNAPSHOT</version>这两个参数拼接起来。如果实在不行就打包一下,看看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文件:

<settings><mirrors><mirror><id>aliyun</id><name>Aliyun Mirror</name><url>https://maven.aliyun.com/repository/public</url><mirrorOf>central</mirrorOf></mirror></mirrors>
</settings>

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

 再次执行:

docker build -t myapp:1.0 . 

 

 如上可以看到成功了。

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

docker images

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

然后我们运行:

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

执行成功如下:

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

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

输出成功! 

相关文章:

  • 简说 python
  • python题库及试卷管理系统
  • java循环语句-跳转关键字break、continue
  • 企业软件架构演进:从流程驱动到知识驱动的数字化转型路径
  • Elasticsearch/OpenSearch MCP Quickstart
  • C++并发编程-2.C++ 线程管控
  • FPGA基础 -- Verilog 表达式之操作符
  • FPGA基础 -- Verilog语言要素之数组
  • CMake指令:set_property和get_property
  • Tomcat本地部署Maven Java Web项目
  • Spring Boot + MyBatis + Redis Vue3 Docker + Kubernetes + Nginx
  • python大学生志愿者管理系统-高校志愿者管理信息系统
  • C++智能指针(详细解答)
  • 渣土车辆定位与监管:科技赋能城市建筑垃圾管理
  • 小米ROM下载安装
  • Java 常用类 Time API:现代时间处理的艺术
  • 项目的难点
  • 游戏技能编辑器之状态机的设计与实现
  • Visual Studio Code 的 AI 特性:开启智能编程新时代
  • 【图像处理入门】10. 计算机视觉基础:从人脸识别到文档矫正
  • 佛山做网站的/18款禁用网站app直播
  • 邯郸移动网站建设报价/公司优化是什么意思?
  • 成都 网站改版/海外推广代理公司
  • 网站的标签修改/免费刷赞网站推广qq免费
  • 百度网站怎么做视频播放器/武汉网站推广公司
  • wordpress网站翻译插件/怎么做百度推广的代理