通过dockerfile创建jar镜像 + 自动化脚本启动

这篇具有很好参考价值的文章主要介绍了通过dockerfile创建jar镜像 + 自动化脚本启动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、dockerfile编写

dockerFile(里面包含向容器添加文件,创建文件夹,启动命令等关键,可以根据实际灵活运用):

# 指定基础镜像
FROM eclipse/alpine_jdk8

ADD plo-coordination-service.jar /workspace/plo-coordination-service.jar 
ADD lib /workspace/lib 
ADD resources /workspace/resources
    
# 镜像暴露的端口
# EXPOSE 8082

USER root
RUN  mkdir /projects/logs
  
###容器启动命令   $PARAMS可以进行docker run传参
ENTRYPOINT ["sh","-c"," java $PARAMS -Duser.timezone=GMT+08 -jar /workspace/plo-coordination-service.jar "]

# 设置时区
# RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

 文件位置:

 dockerfile jar启动参数,docker,jar,java,docker

 命令流程:

#创建镜像 .表示dockerfile在当前目录
docker build -t plo-coordination-service:0.1 .

#查看打包好的镜像
docker images
#启动镜像 PARAMS向容器内启动命令传参
docker run -it -d --name plo-coordination-service -PARAMS="" -p 8082:8082 -p 8955:8955  镜像id
#查看容器
docker ps -a
#查看运行容器
docker ps
#查看日志
docker logs --tail 500 容器id

#进入容器
docker exec 容器id bash
#退出容器
exit

#停止容器
docker stop 容器id
#启动容器
docker start 容器id

#删除容器
docker rm -f 容器id
#删除镜像
docker rmi -f 镜像id

2、自动化脚本启动

 可根据项目进行微调

# 程序启动参数
JAVA_OPTIONS= -Xms2048m -Xmx2048m -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:./logs/app-gc-%t.log -XX:+UseG1GC -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=50M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./logs/app-oom-dump.hprof -Dspring.profiles.active=dev 
#源jar路径 (此处指定到要部署的jar包所在文件夹即可)
SOURCE_PATH=/root/lawes-cases
#docker 镜像/容器名字或者jar名字 这里都命名为这个
SERVER_NAME=plo-coordination-service
#版本号
TAG=v0.1
#分隔符
FLAG=_
#容器映射出来的端口号
#SERVER_PORT=5271
#运行中容器id
RID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
#镜像id
IID=$(docker images | grep "$SERVER_NAME$FLAG$TAG" | awk '{print $3}')
#这里是容器是否已经存在的判断,如果存在就先stop容器再rm容器
if [ -n "$RID" ]; then
  echo "存在运行中容器$SERVER_NAME, RID-$RID"
  docker stop $RID
  docker rm $RID
fi
#容器id
CID=$(docker ps -a | grep "$SERVER_NAME" | awk '{print $1}')
if [ -n "$CID" ]; then
  echo "存在容器$SERVER_NAME, CID-$CID"
  docker rm $CID
fi
#构建docker镜像,同样做是否存在的判断
if [ -n "$IID" ]; then
  echo "存在$SERVER_NAME$FLAG$TAG:$TAG镜像,IID=$IID"
  docker rmi $IID
fi
  
  echo "开始构建镜像"
  cd $SOURCE_PATH
  docker build -t $SERVER_NAME$FLAG$TAG:$TAG .

# 运行docker容器
docker run -it -d --name plo-coordination-service -e PARAMS=$JAVA_OPTIONS -p 8082:8082 -p 8955:8955 $SERVER_NAME$FLAG$TAG:$TAG
echo "$SERVER_NAME容器创建完成"

 遇到坑:

linux下执行shell脚本报错,大概率是文本在win下编辑复制过去的,由于存在linux不支持的换行符等,导致脚本无法执行,可以用下面方式测试

head -1 yourscriptname | od -c
如果这时候系统提示(证明错误):
0000000   #   !   /   b   i   n   /   s   h  \r  \n
0000013
正常的shell脚本文件检查后应提示:
0000000   #   !   /   b   i   n   /   s   h  \n
0000012

解决方式转换:
dos2unix yourscriptname

如果找不到dos2unix 命令
直接 yum install dos2unix 即可

解决方式:文章来源地址https://www.toymoban.com/news/detail-731846.html

到了这里,关于通过dockerfile创建jar镜像 + 自动化脚本启动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【AI实战】BERT 文本分类模型自动化部署之 dockerfile

    本文主要介绍: 基于BERT的文本分类模型,样本不均衡的多分类loss函数的写法 dockerfile自动构建docker镜像,服务部署 BERT 的全称为 Bidirectional Encoder Representation from Transformers,是一个预训练的语言表征模型。它强调了不再像以往一样采用传统的单向语言模型或者把两个单向语言

    2024年02月12日
    浏览(44)
  • Docker在windows下使用教程,通过Dockerfile创建镜像/容器,以YOLO系列为例

     通过可视化界面将极大的降低学习难度。  1.1、Docker Desktop下载  下载地址:Docker Desktop: The #1 Containerization Tool for Developers | Docker 应当是这个界面,选择下载即可 1.2、下载完成后需打开window自带的虚拟机       将Hyper-V勾选即打开,勾选后需重启。  1.3、下载WSL,由于是在

    2024年02月05日
    浏览(66)
  • 树莓派镜像安装 + 设置 + 镜像批量化操作 - 自动化烧写SD Card (三)

    如 《树莓派镜像安装 + 设置 + 镜像批量化操作 - USB boot (二)》中所写, 可以使用树莓派USB挂载方式, 编写自动化脚本, 当有对应的设备出现的时候,格式化 + 烧写镜像; windows上监控读卡器设备 遍历系统设备, 选择读卡器设备, 并定时获取设备信息; 当设备有了大小之后, 开始

    2024年02月14日
    浏览(43)
  • 【Quant专栏】量化交易之自动化下单(1)——通过迅投QMT系统实现自动化下单

    迅投QMT针对证券、期货公司等专业金融机构的私募基金管理人、VIP客户、个人高净值客户等活跃交易用户量身定制的集行情显示、投资研究、策略编写、自动交易、极速交易、智能算法交易、组合篮子交易、合规风险管理等一体的专业策略交易平台。 迅投QMT文档:http://docs

    2024年02月05日
    浏览(46)
  • Jenkins+GitLab+Docker搭建前端自动化构建镜像容器部署

    前言 🚀 需提前安装环境及知识点: 1、Docker搭建及基础操作 2、DockerFile文件描述 3、Jenkins搭建及基础点 🚀 目的: 将我们的前端项目打包成一个镜像容器并自动发布部署,可供随时pull访问 1、在当前项目的根目录创建Dockerfile文件并写入如下代码: 代码片段详细描述: 注意

    2024年02月05日
    浏览(74)
  • 自动化创建ETX用户帐号

    在芯片设计行业,ETX是常见的远程访问环境。用户在通过ETX访问远程环境前必须首先加入ETX系统,然后通过profile分配相关的环境的访问权限。 通常这些操作在ETX WEB页面手工操作,如果我们期望实现用户帐号注册全自动化,就需要将以上操作通过脚本来实现。 经过调查发现

    2024年01月20日
    浏览(40)
  • 通过API接口实现自动化数据同步

    在当今数字化的世界中,API(应用程序编程接口)作为数据交换的桥梁,对于电商企业来说尤为重要。它们允许企业从丰富的数据源中提取必要的信息,为商业决策提供数据支持。本文将围绕如何高效地利用API进行数据采集展开讨论,并提供一些实用的代码示例。 一、API的核

    2024年02月21日
    浏览(40)
  • Azure通过自动化账户实现对资源变更

    参考文档:https://docs.azure.cn/zh-cn/automation/quickstarts/create-azure-automation-account-portal 保存,并在测试窗格里面进行测试 若没有问题,点击发布。 添加runbook S1为定价层 官方文档: https://docs.azure.cn/zh-cn/automation/troubleshoot/runbooks

    2024年02月14日
    浏览(53)
  • 通过自动化单元测试的形式守护系统架构

    目录 0前言 1 背景 2 为什么选择 Archunit 3 Archunit 是什么 4 引入 Archunit 4.1 开始就是如此简单 4.2 如何组织架构规则 4.3 团队如何规范化 通过自动化单元测试的形式守护系统架构是一种有效的方式,可以确保系统在不断演进和修改的过程中保持稳定和可靠。 自动化单元测试是指通

    2024年02月16日
    浏览(52)
  • Apikit 自学日记:创建自动化测试项目

    在API 自动化测试中,所有的测试用例都是以项目维度来进行管理,一个自动化测试项目可以从多个API文档项目中引用API信息来创建API测试用例。 点击左侧菜单栏,进入 API 自动化测试 项目列表页,点击添加按钮:   在弹窗中输入相应的信息,点击确定即可:   在创建项目时

    2024年02月12日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包