Docker部署Java项目
本文使用Dockerfile的形式进行Java项目的部署
第一步:创建Dockerfile文件
Dockerfile是用于创建Docker对象的脚本,先创建Dockerfile文件,以下为我的文件模版:
FROM openjdk:8u181-jdk-alpine ENV WORKPATH /app WORKDIR $WORKPATH ADD ruoyi-admin-api-*.jar mall-admin-0.0.1-SNAPSHOT.jar VOLUME $WORKPATH EXPOSE 9000 ENTRYPOINT ["java","-Xmx256m","-Xms256m","-XX:+HeapDumpOnOutOfMemoryError","-XX:HeapDumpPath=/usr/local/","-Duser.timezone=GMT+8","-jar","mall-admin-0.0.1-SNAPSHOT.jar"]
FROM:java对应的jdk版本
ENV:设置环境变量
WORKDIR:指向构建镜像时使用的目录
ADD:将文件从构建上下文(通常是 Dockerfile 所在目录)复制到镜像中
VOLUME:声明容器中的数据卷,用于持久化存储
EXPOSE: 声明容器运行时监听的网络端口
ENTRYPOINT: 设置容器启动时要执行的入口命令。
第二步:准备Java项目
将项目打包,本文使用的是SpringBoot项目,在idea中可以使用maven的打包功能(package 命令),在idea的maven工具栏中,点击Lifecycle,点击clean,点击package。
项目打包成功之后会放在项目的target文件中,主要使用如图所示的jar包。
第三步:构建Docker镜像
把准备好的Dockerfile和jar包发送到服务器中的同一个文件夹中,准备创建Docker镜像
在当前目录打开命令窗口,输入:
docker build -t XXX .
XXX为创建镜像的名称,后面还有一个 . 不要忘记
-t : 给镜像取名
. : 指定Dockerfile所在目录,如果就在当前目录,则指定为 " . "
输入 : docker images 查看是否成功创建镜像,以下为我的输入结果:
第四步:创建doker容器
输入如图所示的命令
-d : 表示后台运行
--name : 表示给容器起名,如图为ry
-p : 设置端口为8080
最后则是创建容器的镜像名称:ruoyi (对应之前的XXX)
输入 : docker ps -a 查看容器是否创建成功
如图则为创建成功,状态栏status显示为up,则为创建成功
输入 : docker logs -f ry 可查看日志
-f : 跟踪容器日志输出
ry : 指定需要输出日志的容器名,本文为ry
如图所示,本文部署的SpringBoot项目已启动成功
PS:本文部署完成后,启动项目,出现报错,具体表现为图片验证码无法捕获,报错信息如图所示
解决方法:在dockerfile文件增加两行代码,并重新build镜像,即重复上述第三、第四步骤即可。
RUN echo -e "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main\n\ https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/community" > /etc/apk/repositories RUN apk --update add curl bash ttf-dejavu && \ rm -rf /var/cache/apk/*
RUN:在构建过程中在镜像中执行命令
问题参考:https://www.cnblogs.com/yucongblog/p/13994915.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~