git webhook自动部署服务端代码django python docker等

背景

本人开了一个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, BaseHTTPRequestHandler
import json
import subprocess
import os

class 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 &

服务器如何域名映射之类的不属于这里讨论范围,默认这些基础大家都已OK

问题解决

1,可能在测试过程中发现端口9002被占用,解决方式是先执行lsof -i:9002站到端口占用的pid,然后kill -9 pid杀掉即可使用
2,测试是否能够访问成功,在命令行里执行:curl -X POST http://你的域名:9002 
3,发现外网无法访问:http://你的域名:9002 ,登陆阿里云或腾讯云或其他服务器后台,看下服务器的9002端口是不是没开,没开的话自定义开启一下9002即可

作者简介

iOS架构师,几乎用过各种编程语言,以iOS为主。如果您觉得文章帮助了你,请给个关注,本人有一个iOS开发高手必备神器:资源库 ,可以在appstore搜索下载,如果您觉得好,就给资源库来个好评吧?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李长鸿-峰云逸飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值