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

posted @ 2024-08-19 18:19  Lemon1103  阅读(111)  评论(0编辑  收藏  举报