jenkins_pipeline后端_python_docker
1 pipeline { 2 agent any 3 4 environment { 5 imagename = "镜像命名" 6 tag = "v${BUILD_NUMBER}" 7 } 8 9 stages { 10 stage('Pull code') { 11 steps { 12 echo "${imagename}:${tag}" 13 git credentialsId: 'git_key', url: 'git地址' 14 } 15 } 16 17 stage('Clean local history images') { 18 steps { 19 sh 'docker images | grep ${imagename} | awk \'{print $1":"$2}\' | xargs docker rmi || echo "DONE"' 20 } 21 } 22 23 stage('Build docker image') { 24 steps { 25 sh 'docker build --tag=${imagename}:${tag} .' 26 sh 'docker tag ${imagename}:${tag} 仓库地址/${imagename}:${tag}' 27 sh 'docker tag ${imagename}:${tag} 仓库地址/${imagename}:latest' 28 } 29 } 30 31 stage('Push docker image') { 32 steps { 33 sh 'docker push 仓库地址/${imagename}:${tag}' 34 sh 'docker push 仓库地址/${imagename}:latest' 35 } 36 } 37 38 stage ('Deploy') { 39 steps { 40 script { 41 def remote = [:] 42 remote.name = '服务器命名' 43 remote.host = '项目IP' 44 remote.user = 'user' 45 remote.password = 'passwd' 46 remote.allowAnyHosts = true 47 48 sshCommand remote: remote, command: "docker pull 仓库地址/${imagename}:${tag}" 49 sshCommand remote: remote, command: "docker pull 仓库地址/${imagename}:latest" 50 } 51 } 52 } 53 54 stage ('Restart service') { 55 steps { 56 script { 57 def remote = [:] 58 remote.name = '服务器命名' 59 remote.host = '项目IP' 60 remote.user = 'user' 61 remote.password = 'passwd' 62 remote.allowAnyHosts = true 63 64 sshCommand remote: remote, command: "docker stop ${imagename} || echo 'DONE'" 65 sshCommand remote: remote, command: "docker rm ${imagename} || echo 'DONE'" 66 sshCommand remote: remote, command: "docker run -d --name ${imagename} -p 5050:5000 仓库地址/${imagename}:latest" 67 } 68 } 69 } 70 71 stage ('Clean history docker images on romote server') { 72 steps { 73 script { 74 def remote = [:] 75 remote.name = '服务器命名' 76 remote.host = '项目IP' 77 remote.user = 'user' 78 remote.password = 'passwd' 79 remote.allowAnyHosts = true 80 81 sshCommand remote: remote, command: "docker images 仓库地址/${imagename} --filter \"before=172.17.0.4:5000/${imagename}:latest\" -q | xargs docker rmi || echo 'DONE'" 82 } 83 } 84 } 85 } 86 #bearychat报警 87 post { 88 unstable { 89 bearychatSend color: 'red', message: "${env.JOB_NAME},构建不稳定" 90 } 91 failure { 92 bearychatSend color: 'red', message: "${env.JOB_NAME},构建失败" 93 } 94 } 95 96 } 97 98 _________________________dockerfile______________________________________ 99 100 FROM ubuntu:18.04 101 102 MAINTAINER 乂 103 104 RUN echo "deb http://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse" > /etc/apt/sources.list && \ 105 echo "deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse" >> /etc/apt/sources.list&& \ 106 echo "deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list&& \ 107 echo "deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list&& \ 108 echo "deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list&& \ 109 echo "deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list&& \ 110 echo "deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list&& \ 111 echo "deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list&& \ 112 echo "deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list&& \ 113 echo "deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list 114 115 ENV TZ Asia/Shanghai 116 ENV PruneTreeEnv production 117 118 RUN apt-get update \ 119 && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \ 120 && apt-get install -y tzdata \ 121 && apt-get clean \ 122 && apt-get autoclean \ 123 && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 124 125 RUN apt-get update -y \ 126 && apt-get install -y \ 127 vim \ 128 gunicorn \ 129 python3-dev \ 130 python3-pip 131 132 ADD . /code 133 134 WORKDIR /code 135 136 RUN pip3 install -i https://mirrors.aliyun.com/pypi/simple/ --upgrade pip 137 RUN pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ 138 139 140 CMD ["gunicorn", "-b 0.0.0.0:5000", "-k gevent", "app:app"] 141 142 EXPOSE 5000