Heim  >  Artikel  >  System-Tutorial  >  Analysieren des automatischen Linux-Multianwendungs-Docker-Bereitstellungsskripts

Analysieren des automatischen Linux-Multianwendungs-Docker-Bereitstellungsskripts

WBOY
WBOYOriginal
2024-06-05 13:47:05490Durchsuche

摘要: Linux 多应用程序docker自动部署脚本可以结合jenkins分布式部署

解析Linux 多应用程序docker自动部署脚本

Linux 多应用程序docker自动部署脚本可以结合jenkins分布式部署

参数:

镜像名:端口的格式:版本号

例如:spring-client:8764:0.0.1

1.先用maven install 打包项目到target目录下

2.项目对应的Dockerfile路径为:/src/main/docker/Dockerfile

3.脚本自动复制Dockerfile和程序文件自动打包镜像部署

4.docker命令运行时加入--restart unless-stopped 可以容器随docker自启

project=("spring-client:8764:0.0.1" "spring-system:8770:0.0.1" "spring-eureka:8761:0.0.1")
mainDir=/opt/jenkins
jenkinsDir=/root/.jenkins/workspace/spring-boot-xinjiang
#判断主文件夹是否存在,不存在创建
if [ ! -d $mainDir ]; then
  mkdir $mainDir
fi
#循环数组创建每个项目的文件夹
for var in ${project[@]} 
do
  OLD_IFS="$IFS"  
  IFS=":"  
  array=($var)  
  IFS="$OLD_IFS"
  name=${array[0]}
  port=${array[1]}
  version=${array[2]}  
  echo 项目名称$name;
  if [ ! -d $mainDir/$name ]; then
    echo "项目目录不存在,创建项目目录"
    mkdir $mainDir"/"$name
  fi
  cd $jenkinsDir;
  jarName=$name/target/$name-1.0.0.jar
  if [ -f $jarName ]; then
    echo "jar源文件存在,正在复制"
    #复制程序文件(war/jar)的名称
    cp $jarName $mainDir/$name/$name-$version-SNAPSHOT.jar
  else
    echo "jar源文件不存在"
  fi
  #Dockerfile文件的路径
  dockerFileName=$name/src/main/docker/Dockerfile
  if [ -f $dockerFileName ]; then
    echo "docker文件存在,正在复制"
    #复制Dockerfile程序文件的名称
    cp $dockerFileName $mainDir/$name
  else
    echo "docker文件不存在"
  fi
  if [ -f $dockerFileName ] && [ -f $jarName ]; then
    cd $mainDir/$name
    if docker ps -a|grep -i $name;then
      docker stop $name
      docker rm $name
    fi
    imagesid=`docker images|grep -i $name | awk '{print $3}'`

    if [ "$imagesid" == "" ];then
      echo  "镜像不存在"
    else
      echo  "镜像存在删除后构建"
      if docker ps -a|grep -i $name;then
       echo "镜像容器存在,正在停止容器"
       docker stop $name
       echo "镜像容器删除"
       docker rm $name
      fi
      docker rmi $imagesid -f
    fi
     docker build -t $name .
     echo "镜像构建成功"
     echo "容器构建中"
     docker run -d -p $port:$port --name $name --restart unless-stopped $dockerName $name
     echo "容器启动成功"
  else
    echo "镜像构建失败"
  fi
done
exit 0 

Das obige ist der detaillierte Inhalt vonAnalysieren des automatischen Linux-Multianwendungs-Docker-Bereitstellungsskripts. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn