🤟致敬读者
- 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉
📘博主相关
- 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息
文章目录
- Docker容器部署Java项目
- 1. 环境及准备
- 2. 项目打包
- 2. Dockerfile
- 3. 上传文件
- 4. 构建镜像
- 5. 运行容器
- 6. 查看日志
- 7. 测试接口
- 7.1 ip和端口
- 7.2 接口访问
- 8. 拓展(通过线上镜像仓库部署服务)
- 8.1 推送镜像到仓库
- 8.2 服务端部署
📃文章前言
- 🔷文章均为学习工作中整理的笔记。
- 🔶如有错误请指正,共同学习进步。
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
📜文末寄语
- 🟠关注我,获取更多内容。
- 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
- 🟢《全栈知识库》技社区,集结全栈各领域开发者,期待你的加入。
- 🔵加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
- 🟣点击下方名片获取更多内容🍭🍭🍭👇