docker(20) : 构建jar运行容器,挂载jar包运行

本文展示了如何使用Shell脚本来设置临时变量,并构建一个基于OpenJDK8的Docker镜像。这个镜像是为了运行指定的jar文件,包含了启动、监控和日志处理的逻辑。此外,还提供了用于启动、停止、重启和管理容器的脚本。
摘要由CSDN通过智能技术生成

 设置临时变量

# ===> 临时变量
container_name=mytest
jar_name=mytest-1.0-SNAPSHOT.jar
port=8080
# ===> 临时变量

创建shell

# java_image_dockerfile
cat > java_image_dockerfile <<'EOF'
FROM openjdk:8-jdk
 
RUN ln -sf /usr/share/zoneinfo/Asia/ShangHai /etc/localtime \
   && echo Asia/Shanghai > /etc/timezone \
   && dpkg-reconfigure -f noninteractive tzdata
CMD ["sh","/home/startup.sh"]
EOF
docker build -t java_image:1.0 -f java_image_dockerfile .
 
# startup.sh
cat > startup.sh <<'EOF'
jar=jar_name
cd /home && java -jar *.jar --spring.profiles.active=prod
while true
do
    ps=`ps aux|grep $jar |grep -v color | wc -l`
    if [ $ps -eq 0 ]; then
        exit
    fi
    sleep 30s
done
EOF
sed -i "s#jar_name#$jar_name#g" startup.sh
 
# run.sh
cat > run.sh <<'EOF'
path="$( cd "$( dirname "$0"  )" && pwd  )"
docker run -d --name=container_name --log-opt max-size=10m --log-opt max-file=3 \
          --restart=always \
          -v $path:/home \
          -v $path/log:/logs \
          -p port:port java_image:1.0
EOF
sed -i "s#container_name#$container_name#g" run.sh 
sed -i "s#port#$port#g" run.sh 
 
 
cat > bin.sh <<'EOF'
case "$1" in
    start)
        docker start container_name
        ;;
    stop)
        docker stop container_name
        ;;
    restart)
        docker restart container_name
        ;;
    exec)
        docker exec -it container_name bash
        ;;
    rm)
        docker rm -f container_name
        ;;
    log)
        docker logs -f --tail 100 container_name
        ;;
    *)
        echo "start|stop|restart|log"
        ;;
esac
EOF
sed -i "s#container_name#$container_name#g" bin.sh 
 
chmod +x run.sh bin.sh

创建容器

./run.sh

其他命令

# 启动
./bin.sh
# 停止
./bin.sh stop
# 重启
./bin.sh restart
# 查看最新日志
./bin.sh log

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值