docker构建Dockerfile实现部署jar包项目

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

该文章主要是为了简单部署单个jar项目,省去打重复的命令,如果部署的比较多的话还是建议使用docker的编码工具Docker Compose或者k8s进行统一部署。


一、项目打包

先把项目打成jar包,注意配置spring boot的maven打包。

二、编写Dockerfile文件

Dockerfile文件的常用命令

命令描述
FROM指定基础镜像,用于构建新的镜像。
COPY将文件从宿主机复制到容器中。
ADD类似于COPY,但支持远程文件和自动解压缩。
RUN在镜像中运行命令,用于安装软件包和执行其他构建任务。
CMD定义容器启动时要执行的命令,只能有一个CMD命令,如果有多个,只有最后一个会生效。
ENTRYPOINT定义容器启动时要执行的命令,与CMD不同的是,ENTRYPOINT的参数不会被覆盖。
ENV设置环境变量,用于配置容器的运行环境。
WORKDIR设置容器内的工作目录,后续命令将在该目录下执行。
EXPOSE声明容器在运行时监听的端口,但并不映射端口到主机。
VOLUME创建一个挂载点,用于持久化数据。

编写一个Dockerfile文件格式制作镜像

# 基础镜像使用java(根据自己项目中使用的是什么jdk版本设置,用于拉取执行jar包的jdk环境)
FROM java:1.8

#设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

# 指定工作目录
VOLUME /tmp

# 将jar包添加到容器中并更名为app.jar(这里根据你自己打包的文件名修改)
ADD pmi-wapi.jar app.jar

# 定义jvm堆空间
ENV JAVA_OPT="-server -Xmx1024m -Xms512m"

# 定义容器启动时执行的命令
ENTRYPOINT ["java","-jar","-Dfile.encoding=UTF-8","-Dsun.jnu.encoding=UTF8","/app.jar","> /log/app.log"]

三、编写Docker运行执行文件

创建一个build.sh文件:
(此处定义的容器名称和端口号根据自己业务需求修改)

#!/bin/sh
docker_name="pmi-wapi"
docker_port="50022"
_time=$(date "+%Y%m%d%H%M%S")

echo "镜像构建中...."
docker build -t $docker_name:$_time .
echo "镜像构建完成."

# 停止
if [ "$(docker ps -q -f name=$docker_name)" ]; then
    echo "容器停止中...."
    docker stop $docker_name
    echo "容器已停止."
fi

# 删除
if [ "$(docker ps -qa -f name=$docker_name)" ]; then
    echo "容器删除中...."
    docker rm $docker_name
     echo "容器删除成功."
fi


# run
echo "容器重新构建中...."
docker run  -p $docker_port:$docker_port --restart=always -d --name $docker_name $docker_name:$_time
echo "容器发布成功."

在这里插入图片描述

保存退出之后
执行

chmod +x build.sh

sh build.sh

这样子就可以自动构建镜像和容器了。


总结

以上就是docker离线安装jar服务的步骤,当然安装时如果是离线状态,会提示缺少java1.8的依赖镜像,这个时候就需要导入和构造java:1.8的镜像,下一节介绍一下,如果在离线情况下,构建国产服务器的java镜像。

  • 24
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值