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

Spring项目部署到Docker

1. 准备 Spring 项目

确保你的 Spring 项目已经开发完成,且能在本地正常运行。项目一般需打包成可执行的 JAR 或 WAR 文件,以 Maven 项目为例,在项目根目录下执行以下命令进行打包:

mvn clean package

执行完上述命令后,会在项目的 target(Maven)目录下生成相应的 JAR 文件。

2. 创建 Dockerfile

Dockerfile 是一个文本文件,用于定义 Docker 镜像的构建步骤。在 Spring 项目的根目录下创建一个名为 Dockerfile 的文件

使用 JAR 包部署

# 使用官方的 OpenJDK 基础镜像
FROM openjdk:17-jdk-slim

# 设置工作目录
WORKDIR /app

# 将打包好的 JAR 文件复制到容器的工作目录
COPY target/your-project-name.jar app.jar

# 暴露应用运行的端口,需与 Spring 项目配置的端口一致
EXPOSE 8080

# 定义容器启动时执行的命令
CMD ["java", "-jar", "app.jar"]

注意将 your-project-name.jar 替换为实际生成的文件名。

3. 构建 Docker 镜像

在包含 Dockerfile 的项目根目录下,执行以下命令构建 Docker 镜像:

docker build -t your-image-name:your-image-tag .
  • -t:用于指定镜像的名称和标签,例如 spring-app:1.0
  • .:表示使用当前目录下的 Dockerfile 进行构建。

4. 验证镜像构建

执行以下命令查看已构建的 Docker 镜像:

docker images

能看到刚刚构建的 your-image-name:your-image-tag 镜像。

5. 运行 Docker 容器

构建好镜像后,可使用以下命令基于该镜像运行 Docker 容器:

docker run -d -p 8080:8080 your-image-name:your-image-tag

6. 验证部署

在浏览器中输入 http://localhost:8080 (如果使用了其他端口,需相应修改),若看到 Spring 项目的页面或正常响应,说明部署成功。

补充操作(实战经验)

数据卷挂载

如果 Spring 项目需要访问外部数据或保存数据到主机,可以使用数据卷挂载。例如,将主机的 data 目录挂载到容器的 /app/data 目录:

docker run -d -p 8080:8080 -v /host/path/data:/app/data your-image-name:your-image-tag

环境变量配置

若 Spring 项目需要使用环境变量进行配置,可以在运行容器时通过 -e 参数传递环境变量。例如:

docker run -d -p 8080:8080 -e SPRING_PROFILES_ACTIVE=prod your-image-name:your-image-tag

上述命令将 SPRING_PROFILES_ACTIVE 环境变量设置为 prod,表示使用生产环境配置。


http://www.kler.cn/a/524450.html

相关文章:

  • 基于SpringBoot的假期周边游平台的设计与实现(源码+SQL脚本+LW+部署讲解等)
  • 2501,20个窗口常用操作
  • C++ 中用于控制输出格式的操纵符——setw 、setfill、setprecision、fixed
  • 【llm对话系统】大模型 RAG 之回答生成:融合检索信息,生成精准答案
  • Android NDK
  • 挂载mount
  • C# 9.0记录类型:解锁开发效率的魔法密码
  • 17、智能驾驶硬件架构安全设计一般原则
  • Linux学习笔记——用户管理
  • 【回溯+剪枝】找出所有子集的异或总和再求和 全排列Ⅱ
  • JUC--ConcurrentHashMap底层原理
  • 如何创建一个线程池
  • DeepSeek核心贡献:将SFT和RL统一的数学公式
  • C# INotifyPropertyChanged接口在list类型中的应用
  • 大一计算机的自学总结:异或运算
  • 大数据相关职位介绍之一(数据分析,数据开发,数据产品经理,数据运营)
  • 【go语言】函数
  • springboot基于SpringBoot的养老院管理系统设计与实现
  • RDK X5运行DeepSeek-R1-Distill-Qwen-1.5B,体验长思维链的语言大模型!
  • 芯片AI深度实战:基础篇之Ollama
  • GAEA 社区:从用户到共同创造者
  • 线程概念、操作
  • Python NumPy(6):修改数组形状、翻转数组、修改数组维度
  • MySQL查询优化(三):深度解读 MySQL客户端和服务端协议
  • 网站如何正式上线(运维详解)
  • 解决 pip install 出现 error: subprocess-exited-with-error 错误的方法