Docker 自动部署脚本
Ps:需要将上述的脚本、Dockerfile文件和jar包放在同一路径下,然后执行自动脚本即可自动部署项目,如果项目有更新删除jar包重新上传再执行自动话脚本即可。
shell
#源算法路径 (此处指定到要部署的算法包所在文件夹即可)
SOURCE_PATH=/usr/lv/algorithm/demo
#docker 镜像/容器名字或者jar名字 这里都命名为这个
SERVER_NAME=demo
#版本号
TAG=latest
#容器映射出来的端口号
SERVER_PORT=5271
#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
#镜像id
IID=$(docker images | grep "$SERVER_NAME:$TAG" | awk '{print $3}')
#这里是容器是否已经存在的判断,如果存在就先stop容器再rm容器
if [ -n "$CID" ]; then
echo "存在容器$SERVER_NAME, CID-$CID"
docker stop $CID
docker rm $CID
fi
#构建docker镜像,同样做是否存在的判断
if [ -n "$IID" ]; then
echo "存在$SERVER_NAME:$TAG镜像,IID=$IID"
docker rmi $IID
else
echo "不存在$SERVER_NAME:$TAG镜像,开始构建镜像"
cd $SOURCE_PATH
docker build -t $SERVER_NAME:$TAG .
fi
# 运行docker容器
docker run -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone:ro --name $SERVER_NAME -d -p $SERVER_PORT:$SERVER_PORT $SERVER_NAME:$TAG
echo "$SERVER_NAME容器创建完成"
SOURCE_PATH=/usr/lv/algorithm/demo
SERVER_NAME=demo
TAG=latest
SERVER_PORT=5002
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
IID=$(docker images | grep "$SERVER_NAME:$TAG" | awk '{print $3}')
if [ -n "$CID" ]; then
echo "Exists$SERVER_NAME, CID-$CID"
docker stop $CID
docker rm $CID
fi
if [ -n "$IID" ]; then
echo " Exists $SERVER_NAME:$TAG image,IID=$IID"
docker rmi $IID
else
echo " No $SERVER_NAME:$TAG image exists. Start building the image. "
cd $SOURCE_PATH
docker build -t $SERVER_NAME:$TAG .
fi
docker run -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone:ro
--name $SERVER_NAME -d -p $SERVER_PORT:$SERVER_PORT $SERVER_NAME:$TAG
echo "$SERVER_NAME container creation complete"
version: '3'
services:
service-c:
image: 172.31.41.119:5000/gdal_crop:v2
ports:
- 5002: 5000
networks :
- counter-net
volumes :
- type: volume
source: E:/Tomcat/webapps/ILCSData/PAMC_Chain/Step1
target: /GDAL_Docker_Clip/Results
restart: always
hostname: Image Matching
service-a:
image: 172.31.41.119:5000/lcc_pca_kmeans:v8
depends_on:
- service-c
ports:
- 5008: 5000
networks :
- counter-net
volumes :
- type: volume
source: E:/Tomcat/webapps/ILCSData/PAMC_Chain/Step2
target: /Docker_Python_PCA_KMeans/Results
restart: always
hostname: Change Detection
service-b:
image: 172.31.41.119:5000/r_shiny-ebimage:v20
depends_on:
- service-a
ports:
- 5020: 5000
networks :
- counter-net
volumes :
- type: volume
source: E:/Tomcat//webapps/ILCSData/PAMC_Chain/Step3
target: /Docker_R_EBImage/Results
restart: always
hostname: Pass Filter