通过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在当前目录
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 即可

解决方式:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值