shell脚本Docker+spring boot一键启动

6 篇文章 0 订阅
4 篇文章 0 订阅
前言

编写docker启动脚本,实现服务器上自动化启动,包括pull代码maven打包docker构建镜像移除容器重新启动

运行环境

spring boot + docker

脚本

startWithDocker.sh

#!/bin/bash
  
# 定义常量
TAG=dev_mvp1.1 #docker tag
APP_NAME=test-api  #项目名称

# 查看所有容器
sudo docker ps -a

# 获取容器ID
containerId=`sudo docker ps -a | grep $APP_NAME | awk '{print $1}'`
echo "test-api contaninerId ${containerId}"

sudo docker stop $containerId
echo "stop ${APP_NAME} container ${containerId} "

sudo docker container rm $containerId
echo "rm container ${containerId}\n\n"

# build core 
cd test-core/
echo "pull test-core code..."
git pull
mvn clean install -Dmaven.test.skip=true
echo "test-core install end...\n\n"

# package api
cd ../test-api
echo "pull test-api code..."
git pull
mvn clean package -Dmaven.test.skip=true
echo "test-api package end..."

#  编译镜像
sudo docker build -t ccr.s.tencentyun.com/test/test-api:$TAG .
sudo docker push ccr.s.tencentyun.com/test/test-api:$TAG

# 获取镜像ID
imageId=`sudo docker images | grep $TAG | grep $APP_NAME  | awk '{print $3}'`
echo "find ${APP_NAME}.${TAG} imageId ${imageId}"

# 启动容器
sudo docker run -d -m 3g -p 8000:8000 --name $APP_NAME $imageId

# 获取启动的容器ID
# 循环获取,有可能容器还没启动好 -n:newContainerId是否赋值
newContainerId=`sudo docker ps -a  | grep $APP_NAME | awk '{print $1}'`
while [ ! -n "$newContainerId" ]
do
  # 没获取到容器ID,重新获取
  echo "try to get containerId"
  newContainerId=`sudo docker ps -a | grep $APP_NAME | awk '{print $1}'`
done

echo "${APP_NAME} restart success!!! New containerId ${newContainerId} "

# 查看日志
sudo docker logs --tail=500 -f $newContainerId

DockerFile

Dockerfile

FROM ccr.s.tencentyun.com/test/jdk-8u281
MAINTAINER Test<test@qq.com>

LABEL SERVICE_NAME=test-api
ENV MALLOC_ARENA_MAX=1
ENV DEPLOY_ENV=dev

ADD target/test-api.jar /opt/
ADD entrypoint.sh /opt/
RUN chmod a+x /opt/entrypoint.sh

CMD ["/opt/entrypoint.sh"]
总结

编写此脚本,熟悉shell中grepawk的使用和docker部署基本命令即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值