docker将jar包打镜像启动/镜像导出为tar包启动

21 篇文章 2 订阅

本文旨在将通用的jar包通过Dockerfile文件打成docker镜像包启动,并支持导出到tar包后到另一台机器上启动。镜像包的好处在于无法被解包,并且不被服务器环境所影响,因为Dockerfile文件已经实现了最小环境,每个镜像都是一套最小启动环境。目前假设读者的Linux服务器版本为Centos 7.6及以上,且安装了docker环境。

一.jar包打docker镜像

  1. 将jar包和Dockerfile文件放在同一个目录下(dockerfile文件详见下文附录部分)

  2. build 命令
    appname为镜像名可自定义,注意最后面有一个空格加一个点.

docker build -f Dockerfile -t ${镜像名}:${version} .
  1. images 命令

    查看已经上传的镜像

    docker images
    

    image-20220119184720801

  2. run 命令

    imageid通过 docker images命令获取,8080为镜像内部端口,8099为对外暴露端口

    docker run -p 8099:8080 imageid
    
  3. ps 命令

    查看运行中的镜像

    docker ps
    

    image-20220119184952445

二. 如何将镜像导出为tar包

导出tar包(imageid通过 docker images命令获取):/usr/local/docker-build/appname.tar为自定义导出的目录以及tar包名称。

docker save -o ${镜像名}.tar.gz ${镜像名}:${version}

三. 拿到tar包后如何加载到docker上并启动

  1. load 命令

    docker load -i appname.tar
    

这个时候我们查看docker images会发现我们的REPOSITORY以及TAG,我们需要自己打个标签比如(如果在build的时候就已经打好标签可以忽略,又或者想自己重命名标签可参考以下命令):

docker tag imageid 镜像名:${version}
  1. run 命令

    docker run -p 8099:8080 镜像名:${version}  
    
    

(8080为镜像内部端口,8099为对外暴露端口)



# 附录
Dockerfile文件内容如下,这里主要注意第三行,由于Dockerfile文件跟jar包放在同一个路径下所以直接写jar包名称即可,若jar包与Dockerfile文件不在同一个路径,就需要在第三行指定jar包的绝对路径地址:
```docker
FROM registry.cn-beijing.aliyuncs.com/hub-mirrors/openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE=appname.jar
COPY ${JAR_FILE} app.jar

#设置变量
ENV AGENT_LIG="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address="
ENV AGENT_PORT=""
ENV PORT=""
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

ENTRYPOINT ["sh","-c","java $AGENG_LIB$AGENT_PORT -jar app.jar  --server.port=$PORT"]

备注:我们使用mvn clean install “-Dmaven.test.skip=true”,下载的jar包会带一个-0.0.1-SNAPSHOT的后缀,这个时候我们只需要在pom文件的build节点中加一句,表示指定jar包名称为application.jar

<build>
	<finalName>application</finalName>
</build>
  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值