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不支持的换行符等,导致脚本无法执行,可以用下面方式测试文章来源:https://www.toymoban.com/news/detail-731846.html
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模板网!