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

在 Java 项目中搭建和部署 Docker 的详细流程

引言

在现代软件开发中,Docker 已成为一种流行的工具,用于简化应用的部署和运行环境的一致性。本文将详细介绍如何在 Java 项目中搭建和部署 Docker,包括配置文件、代码示例以及流程图。


一、整体工作流程

以下是整个流程的概览:

编写 Java 代码
构建 Java 项目
创建 Dockerfile
构建 Docker 镜像
运行 Docker 容器
发布镜像到 Docker Hub
在服务器上拉取并运行容器

二、搭建 Java 项目

2.1 创建一个简单的 Spring Boot 项目

项目结构
my-java-app/
├── src/main/java/com/example/demo/DemoApplication.java
├── src/main/resources/application.properties
├── pom.xml
└── Dockerfile
DemoApplication.java 文件内容:
package com.example.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@SpringBootApplication
@RestController
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}@GetMapping("/")public String home() {return "Hello, Docker!";}
}
application.properties 文件内容:
server.port=8080
pom.xml 文件内容:
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>demo</artifactId><version>1.0-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.0</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

三、创建 Dockerfile

在项目根目录下创建一个名为 Dockerfile 的文件,定义如何构建 Docker 镜像。

Dockerfile 文件内容:
# 使用官方 OpenJDK 基础镜像
FROM openjdk:17-jdk-slim# 设置工作目录
WORKDIR /app# 复制 Maven 构建的 JAR 文件
COPY target/demo-1.0-SNAPSHOT.jar app.jar# 暴露端口
EXPOSE 8080# 启动命令
ENTRYPOINT ["java", "-jar", "app.jar"]

四、构建和运行 Docker 容器

4.1 构建 Java 项目

在项目根目录下运行以下命令,使用 Maven 构建项目:

mvn clean package

构建完成后,会在 target 目录下生成一个 JAR 文件,例如 demo-1.0-SNAPSHOT.jar

4.2 构建 Docker 镜像

在项目根目录下运行以下命令构建镜像:

docker build -t my-java-app .

4.3 运行容器

运行容器并将主机的 8080 端口映射到容器的 8080 端口:

docker run -d -p 8080:8080 --name my-running-app my-java-app

4.4 验证运行

访问 http://localhost:8080,您应该会看到页面显示 Hello, Docker!


五、发布镜像到 Docker Hub

5.1 登录 Docker Hub

登录到您的 Docker Hub 账户:

docker login

输入用户名和密码完成登录。

5.2 标记镜像

为镜像添加标签以便上传到 Docker Hub:

docker tag my-java-app your-dockerhub-username/my-java-app:1.0

5.3 推送镜像

将镜像推送到 Docker Hub:

docker push your-dockerhub-username/my-java-app:1.0

六、在服务器上部署

6.1 拉取镜像

在目标服务器上运行以下命令拉取镜像:

docker pull your-dockerhub-username/my-java-app:1.0

6.2 运行容器

运行容器并映射端口:

docker run -d -p 8080:8080 --name my-deployed-app your-dockerhub-username/my-java-app:1.0

6.3 验证部署

访问服务器的 http://<server-ip>:8080,验证应用是否正常运行。


七、总结

通过本文,我们详细介绍了如何在 Java 项目中搭建和部署 Docker。以下是关键点总结:

  1. 编写 Java 项目:使用 Spring Boot 快速构建一个 Web 应用。
  2. 创建 Dockerfile:定义应用的运行环境和启动方式。
  3. 构建和运行容器:通过 docker builddocker run 快速启动应用。
  4. 发布镜像:将镜像推送到 Docker Hub,便于分发和部署。
  5. 服务器部署:在目标服务器上拉取镜像并运行容器。

希望本文能帮助您快速掌握在 Java 项目中搭建和部署 Docker 的方法,并将其应用到实际项目中。如果您有任何问题或建议,请随时留言交流!


参考资料

  • Docker 官方文档
  • Spring Boot 官方文档
  • Docker Hub 文档

相关文章:

  • WebUI可视化:第3章:Gradio入门实战
  • 将AAB转APK的两种好用方法AAB to APK Converter
  • ARM服务器与X86服务器核心区别分析
  • 【时时三省】Python 语言----函数
  • Springoot、Flowable快速学习
  • 【prompt是什么?有哪些技巧?】
  • 华为OD机试真题——推荐多样性(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • ubuntu(28):ubuntu系统多版本conda和多版本cuda共存
  • ElementUi的Dropdown下拉菜单的详细介绍及使用
  • JAVA常用分布式锁Redisson
  • Redis相关
  • FX10(CYUSB4014)USB3.2(10Gbps)开发笔记分享(1):硬件设计与开发环境搭建
  • Go 语言 Map(集合)
  • 真.从“零”搞 VSCode+STM32CubeMx+C <2>调试+烧录
  • 力扣-234.回文链表
  • 黑马Redis(三)黑马点评项目
  • 【HTTP/3:互联网通信的量子飞跃】
  • 【QQmusic自定义控件实现音乐播放器核心交互逻辑】第三章
  • OpenHarmony - 小型系统内核(LiteOS-A)(十),魔法键使用方法,用户态异常信息说明
  • git版本回退 | 远程仓库的回退 (附实战Demo)
  • 上海虹桥至福建三明直飞航线开通,飞行时间1小时40分
  • 中青报:“猿辅导员工猝死”事件上热搜,是对健康职场环境的共同关切
  • 全国首例!上市公司董监高未履行公开增持承诺,投资者起诉获赔
  • 文昌市委原书记龙卫东已任海南省人社厅党组书记
  • 福耀科技大学发布招生章程:专业培养语种为英语,综合改革省份选考需含物化
  • 光线传媒:正与部分重点地区洽谈主题乐园合作,首款3A游戏预计三年左右推出