前言:Docker 是 Java 项目标准化打包、环境隔离、一键部署、集群管理的核心工具,能彻底解决"本地能跑,服务器跑不了"的问题。

一、让我们看看Docker 能给 Java 项目带来什么?

  1. 环境统一:开发、测试、生产用完全一样的 JDK、依赖、配置
  2. 一键部署:打包成镜像,任何装了 Docker 的机器都能直接运行
  3. 隔离性:多个 Java 项目互不干扰,端口、依赖、内存相互隔离
  4. 轻量:比虚拟机小得多,启动秒级,资源占用低
  5. 可迁移:镜像推送到仓库,随处拉取运行

二、Java 开发最常用的 Docker 命令

1. 必记命令:查看日志常用

docker ps        # 看正在跑的容器
docker images    # 看镜像
docker logs -f 容器名  # 看日志

2. 启动、停止及重启

#启动
docker run -d -p 宿主机端口:容器端口 --name 名字 镜像
#停止
docker stop 容器名
#启动已停止的容器
docker start 容器名
#未停止的容器  先停止再重启
docker restart 容器名

3. 进入容器内部

docker exec -it 容器名 /bin/bash

4. 删除、清理

docker rm 容器名      # 删除容器
docker rmi 镜像名     # 删除镜像
docker system prune   # 一键清理垃圾

5. 构建镜像

docker build -t 镜像名:版本 .

三、实战场景:把 SpringBoot 项目打包成 Docker 镜像(重要,本篇比学技能)

1. 准备工作

  • 一个可运行的 Java / SpringBoot 项目
  • 服务器 / 本地已安装 Docker
  • Maven/Gradle 打包好的 jar

2. 编写 Dockerfile(核心文件)

在项目根目录创建 Dockerfile(无后缀名):

# 基础镜像:自带JDK17(根据你的项目版本选择)
FROM openjdk:17-jdk-slim

# 作者信息
MAINTAINER yourname

# 把本地jar包复制到容器内
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar

# 容器启动命令:运行jar包
ENTRYPOINT ["java","-jar","/app.jar"]
# 可加入jvm参数优化
ENTRYPOINT ["java", "-Xms256m", "-Xmx512m", "-jar", "app.jar"]

说明:

  • FROM:指定基础环境(JDK)
  • COPY:把编译好的 jar 放进容器
  • ENTRYPOINT:容器启动时执行的命令;可加入jvm参数进行优化

3. 构建Docker 镜像

docker build -t 镜像名字 .
  • -t:给镜像起名字
  • .:Dockerfile 所在目录

4. 运行容器

docker run -d \
  --name 容器名称 \
  -p 8080:8080 \
  镜像名
  • -d:后台运行
  • -p 宿主机端口:容器端口
  • --name:容器名称

5. 访问项目

#浏览器访问
http://服务器IP:8080

总结

开发代码 → Maven打包 → 构建Docker镜像 → 推送到镜像仓库(Harbor/Docker Hub)
→ 测试/生产服务器拉取镜像 → 启动容器 → 运行服务

以上就是目前互联网公司标准的 Java 项目部署流程。Docker 让 Java 项目一键部署、随处运行,解决了环境隔离与部署难题。本文已完整覆盖Java项目Docker化的全流程。

随着Java微服务架构的普及,单一服务器的Docker部署已无法满足高可用、高并发的生产需求。此时,Docker与K8s(Kubernetes)的协同就成为了企业级部署的核心方案——Docker负责打包镜像、运行容器,K8s负责集群管理、自动扩缩容、故障自愈,完美适配多服务、高可用的微服务场景。下一篇将聚焦Java项目的K8s部署实战,从K8s环境搭建、Docker镜像推送,到Deployment配置、Pod管理,手把手教你搞定Java微服务的K8s集群部署,感兴趣的朋友可以持续关注~

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐