背景自己开了一个django的集体博客,而且应用docker部署的,每次有代码更改都须要git本地提交,而后登陆服务器拉取代码,比拟耗时耗力,有没有一种形式能够本地提交代码之后,服务器主动拉取?这就是本文要介绍的主动部署
计划调研看了网上对于主动部署的文章不是特地多,而且部署的都有点简单,尤其是针对docker容器的这种根本没有还有大部分都是介绍如何主动部署一个网站,然而网站外的代码没法拉取,因为网站内执行git命令,无奈cd到网站根目录外去操作,通过大量尝试,本人钻研出一种十分间接简略的主动部署计划
计划次要内容用python写一个webhook.py的服务文件,运行 python3 webhook.py如果曾经运行了,端口9002会被占用,查找pid: lsof -i:9002 ,而后kill就行外网无法访问http://ip:9002/,是端口须要在控制台增加放开规定详解因为我的是docker利用治理形式,网站内目录拉取不了外层级的目录,所以须要独立开webhook服务,这种独立webhook服务比拟通用,根本所有webhook需要都能够满足首先我用python开的服务,当然php、go等都能够,语言不限,我这里以python为例服务代码:
from http.server import HTTPServer, BaseHTTPRequestHandlerimport jsonimport subprocessimport osclass Resquest(BaseHTTPRequestHandler): def handler(self): print("data:", self.rfile.readline().decode()) self.wfile.write(self.rfile.readline()) def do_POST(self): print("hello webhook..") os.system('cd /root/docker-django && git add . && git status && git stash ;git stash clear;git pull') print("git pull finished")if __name__ == '__main__': host = ('', 9002) server = HTTPServer(host, Resquest) print("Starting server, listen at: %s:%s" % host) server.serve_forever()这段服务代码是网上找的,外面有get和post,这段是我精简之后的,没必要get,也没必要解析参数,间接开启服务执行shell命令就完事了
在服务器上执行 python3 webhook.py 服务就起来了,前面加上& 而后回车,就能够在后盾运行了 python3 webhook.py & ...