引言
很多人很喜欢这个Dooy-AI>>项目,并且偷偷修改了作者的源码,也重新构建了镜像并成功启动,随着时间的推移,作者开源程序也随之更新了版本,我们想要保留更改内容的同时,还想要合并作者的新改动(增量更新,又想好又想巧!),笨办法是把作者最新源码拿过来再重新改一遍,这种方法虽然简单粗暴,但是费时费力,并且有些东西自己改过之后都忘记了,做一两次可以,久而久之每次更新修改着实麻烦,所以急需一种简单高效的更新方案。
注意,本文是基于上一篇《拥有私人GPT:chatgpt-web-midjourney-proxy完整部署指南》的续篇,着重补充讲解关于如何快速增量更新已经搭建好的AI程序。如果您已完成了该程序(以下简称Dooy-AI)的Docker搭建,可以继续阅读,否则建议先返回阅读上篇内容。
本文讲解开源程序的更新方法,适用于Dooy-AI的同时,方法也可沿用到其它开源程序,可谓一劳永逸。
阅读并按照本文实操后,您将大概率获得如下所有能力:
- 效率提升:更新由原来的折腾至少1小时缩短为5分钟搞定,大大提升了效率;
- 失误率下降:遗漏修改代码的几率大大降低;
- 开源程序更新技能:永久性习得所有Docker类程序增量同步更新技能。
操作步骤
1、准备工作
特别说明:本文阅读需要有一定的计算机基础,对于纯小白并不是十分友好。如果你是新手,大概率准备工作是没有涉猎的,一头雾水,这边建议你不要慌,慢一点,按照提示逐步操作和实现,必要时候查询互联网或者请教GPT>>,达成目标是早晚的事,毕竟不能一口吃个胖子。
前往Github>>下载并安装、登录Github Desktop程序,注意:Github需要魔法才能访问的问题请自行解决。另外,该程序有一定几率没有下载速度,解决方法是可以修改本地电脑的host文件,将以下代码加入文档末尾并保存(host文件可以通过火绒程序 >>快速打开)。
192.30.253.112 github.com
103.245.222.133 assets-cdn.github.com
151.101.25.194 github.global.ssl.fastly.net
151.101.24.133 assets-cdn.github.com
151.101.72.133 avatars1.githubusercontent.com
151.101.72.133 avatars2.githubusercontent.com
151.101.229.194 github.global.ssl.fastly.net
不同的地区可能对应的该区域响应IP不一样,如果以上IP加入后速度没有提升,还可以精准查询当前区域适配的Github服务器IP,查询方法请参考文章《Github 上传、下载过慢的解决方案》。
Github桌面版完成以上操作后,你将看到以下界面:
2、从宝塔下载更新前程序源码。
如果你上次构建完镜像没有其它动作,大概率你的程序还在宝塔面板的“文件”菜单中,找到你的程序文件并右键创建压缩包文件,并下载。
3、为Dooy-AI新建Github仓库。
我们需要在Github上新建一个空的代码仓库,这样做一方面可以连接上游作者原仓库进行合并代码的动作,另一方面还可以一键部署到Vercel进行错误检查,毕竟构建镜像并在docker容器启动程序更复杂一些,这样先从Vercel跑一遍能极大的降低程序部署返工几率。
4、把新建的代码仓库克隆到本地。
因为Github网页端操作功能十分有限,所以我们需要用Github desktop将云端仓库克隆到本地电脑进行操作。
完成克隆后,你可以从程序中看到这个仓库的信息,如下图所示,可以点击靠右侧的Fetch origin进行云端和本地的数据同步。
5、本地加入我们的程序代码并同步云端。
找到Github本地仓库文件位置,并解压第2步从宝塔下载的程序文件到当前代码仓文件夹内(注意,复制过程提示的.git文件无需覆盖,跳过即可)。
完成复制后,返回Github desktop会收到提交提示,填写并提交即可。
6、合并更新
合并的原理是通过Git命令可以关联上游仓库(也就是作者仓库)作为本仓库的一个分支upstream,然后更新该分支内容使其与上游作者仓库内容一致,最后将分支与本仓库代码合并(merge)即可获得增量更新,如果遇到冲突请在VScode中手动解决即可。具体内容可参考早期文章《Github中clone仓库项目的版本更新方法(非fork)》。
第一步,打开Github desktop的Command Prompt命令工具,并输入以下命令:
git remote add upstream https://github.com/Dooy/chatgpt-web-midjourney-proxy.git
第二步,拉取上游仓库更新的内容。如果这里的远程仓库名字不叫upstream,请替换成你实际的远程仓库名,比如cangku等,这些都是你在第一步自己命名的,前后保持一致即可。
git fetch upstream
第三步,本地仓库代码与远程上游作者代码合并。
第四步,处理冲突。
第五步,本地合并后的代码推送给github。
至此代码合并完成。
7、Vecerl部署测试
注意,此步骤可跳过。如果你想验证修改是否满意,而不希望构建完成镜像后运行出错再返工,则建议你执行该步骤。
打开Vercel>>并通过你的Github账号授权登录则会同步代码仓。
找到Add New并新建一个项目。
找到Dooy-AI代码仓并导入。
点击Deploy完成部署(无需配置其它参数)。如果部署成功,你将可以通过Vercel分配给你的项目url打开。仔细检查打开的程序修改是否满意,如果有不满意,可以在本地代码仓直接修改并更新,Vercel会自动更新项目至最新代码,最终确认无误后可进入第8步的镜像构建环节。
cd www/wwwroot/dooy-ai2024
docker build -t chatgptxxxx .
重新构建容器的命令请参考上文《拥有私人GPT:chatgpt-web-midjourney-proxy完整部署指南》。
至此,恭喜你的程序已完成和作者同步的更新工作!