Docker容器部署Java项目(详细版)

🤟致敬读者

  • 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉

📘博主相关



📃文章前言

  • 🔷文章均为学习工作中整理的笔记。
  • 🔶如有错误请指正,共同学习进步。

Docker容器部署Java项目

1. 环境及准备

docker容器已安装(未安装参考文章安装docker容器安装docker
Java环境镜像已创建(拉取线上的或本地制作,可参考制作JDK环境镜像(包含配置jdk环境变量))
Java项目已完成(提前准备好一个Java项目,能正常跑起来,且接口可成功调用)SpringBoot的搭建(两种方式)

这里准备了一个spring boot项目

2. 项目打包

将Java项目打成jar包
可参考文章:Java项目打包(使用IntelliJ IDEA打包Java项目)
可参考文章:Java项目打包(Maven命令打包)指南(操作简单)
可参考文章:Java项目打包方式汇总

2. Dockerfile

制作项目镜像的Dockerfile文件

# 使用官方 Java 基础镜像(推荐选择与开发环境一致的 JDK 版本,由于服务器内网环境无法拉取线上基础镜像故自行构建Java8镜像)
FROM java:8

# 设置容器内工作目录(可选)
# WORKDIR /app

# 复制 JAR 文件到容器中(注意名称与实际打包的 JAR 文件一致)(这里提前将app.jar通过oss复制进来放在了Dockerfile文件同级目录中,故无需指定target路径)
COPY app.jar app.jar

# 暴露应用端口(与 application.yml/properties 中 server.port 一致)
EXPOSE 8089

# 设置 JVM 启动参数(可选,如内存限制、时区)
ENV JAVA_OPTS="-Xmx512m -Duser.timezone=Asia/Shanghai"

# 启动命令(使用 exec 形式避免信号丢失)
ENTRYPOINT exec java ${JAVA_OPTS} -jar app.jar

3. 上传文件

FileZilla下载安装使用指南(精简)
linux服务器上安装oss对象存储(命令行工具使用oss)
将项目jar包和Dockerfile文件通过FTP工具上传到服务器指定位置
这里直接使用oss工具上传了
在服务器中创建的文件夹路径下将文件都传进来
上传jar包

ossutil64 cp oss://dev/3_JWH/01_JAVA_BACK/app.jar app.jar

上传Dockerfile

ossutil64 cp oss://dev/3_JWH/01_JAVA_BACK/Dockerfile Dockerfile

上传完成后查看文件

ls

在这里插入图片描述

4. 构建镜像

根目录执行构建
-t 指定镜像名称和标签,注意结尾的 “.” 表示使用当前目录的 Dockerfile

docker build -t sb_back:20250326 .

在这里插入图片描述

验证镜像是否生成

docker images

在这里插入图片描述

5. 运行容器

执行命令运行容器(启动服务)
-p 端口映射,映射宿主机端口 3006 到容器端口 8089
-d 后台运行
--name 容器别名,可自定义,这里定义为sb-back
sb-back:20250326 用于运行容器的镜像名和标签TAG

docker run -d -p 3006:8089 --name sb_back sb_back:20250326

在这里插入图片描述运行成功后查看正在运行的容器

docekr ps

在这里插入图片描述

6. 查看日志

查看日志确认启动是否成功

docker logs -f sb_back

7. 测试接口

7.1 ip和端口

将服务部署到docker后
访问接口的ip和端口就变成了运行容器时所在服务器的ip和指定的端口号
如我们的服务器ip为172.180.10.1
刚刚指定的端口为3006
访问的ip地址就是

http://172.180.10.1:3006

7.2 接口访问

正常默认调用接口可如下(无参数)

curl http://172.180.10.1:3006/test/test1 

默认请求头参数:Content-Type: application/x-www-form-urlencoded

如果有参数,且指定了请求头类型,如
请求类型为POST,请求参数为JSONObject(这里内容为空),请求头为application/json
如图
在这里插入图片描述

则curl调用如下

curl http://172.180.10.1:3006/test/test1 -H "Content-Type:application/json" -d "{}"

在这里插入图片描述

调用成功如下
在这里插入图片描述

关于curl调用接口的详细内容可参考:curl调用带参数接口方法

8. 拓展(通过线上镜像仓库部署服务)

上面是本地运行容器,下面可以将镜像上传到镜像仓库,通过线上拉取
将部署到服务器

8.1 推送镜像到仓库

登录 Docker Hub(需提前注册账号)

docker login

标记镜像(格式:docker.io/<用户名>/<镜像名>:<标签>)

docker tag sb-back:1.0.0 yourusername/sb-back:1.0.0

推送镜像

docker push yourusername/sb-back:1.0.0

8.2 服务端部署

登录 Docker(若使用私有仓库)

docker login

拉取镜像

docker pull yourusername/sb-back:1.0.0

运行容器(示例:后台运行 + 端口映射 + 自动重启)

docker run -d \
  --name sb-back \
  -p 3006:8089 \
  --restart=always \
  yourusername/sb-back:1.0.0

📜文末寄语

  • 🟠关注我,获取更多内容。
  • 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
  • 🟢《全栈知识库》技社区,集结全栈各领域开发者,期待你的加入。
  • 🔵​加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
  • 🟣点击下方名片获取更多内容🍭🍭🍭👇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值