Laravel 学习笔记之 Toran Proxy 搭建私有Packagist镜像

随着业务越来越复杂,有些service具有通用性,即Repo A中的某一service其他的几个Repo都会不同程度的需要,如果能把该service作为一个独立的package,这样其他的Repo可以composer安装这个package,这会避免写多余和重复的代码。

举个例子:假设一个产品有100个tables,后端API Repo的Model逻辑封装了很多CRUD逻辑,Model Event逻辑,Model Policy逻辑,Model Cache逻辑,Eloquent扩展逻辑,甚至包括字段加密逻辑等等。而后台管理Admin Repo也同样不同程度的操作这100tables,定时作业Cron Repo也同样不同程度的操作这100tables,它们都需要API Repo的Model代码。所以可以把Model代码抽离出来作为一个private package,有其他Repo需要可以composer安装这个private package。

可以使用Toran Proxy来做Composer Proxy,Toran Proxy也是composer作者开发的,可靠性也有保证。可以在Toran Proxy Download下载安装该服务,安装过程比较简单。如可以在AWS服务器上安装好Toran Proxy后打开主页,按照提示设置下本地的composer配置文件~/.composer/config.json,如个人在本地安装后需要在config.json中按照提示的设置如下:

{
    "config": {
        "secure-http": false
        },
    "repositories": [
        {
                "type": "composer",
                "url": "http://toran.app:8888/repo/private/"
        },
        {
                "type": "composer",
                "url": "http://toran.app:8888/repo/packagist/"
        },
       {                
            "packagist": false
       }
    ]
}

这里"secure-http": false设置为false是因为http://toran.app:8888/是http协议而不是https协议,composer默认走的是https协议,这里仅供说明设置false,尽管应该按照默认的https协议。

然后在搭建的toran proxy中添加私有的package就行,这里第二个repo是存放在私有的Bitbucket Server上:

图片描述

图片描述

总的来说,就是在私有的服务器上搭建一个packagist镜像,把内部的一些service拆分打包成一些公用的package,这些package不适宜暴露,代码可以放在Bitbucket Server或Github Private Repository或Gitlab Server,composer安装这些private package时,会从私有代码仓库如Bitbucket Server中拉取代码并打包成zip包,存放在你安装的private packagist服务器上供下载安装;如果安装网络上public package如symfony/http-kernel时依然从github上拉取代码并打包成zip包存放在你的private packagist服务器上。这样会使得下次下载同样的package时速度会提高,这和平时通过packagist中国镜像下载public package时速度很快同样道理。

不管怎样,总会遇到很多service不仅仅一个Repo需要的,这个具有公用性的service就可以做成一个private package放在公司内部搭建的private packagist镜像上,这也极大提高整体的开发效率。

没人愿意浪费时间去写重复的service的,这个工具可以帮助解决这个问题。

RightCapital招聘Laravel DevOps


为五斗米折腰

3.1k 声望
920 粉丝
0 条评论
推荐阅读
Kubernetes学习笔记之CSI External Provisioner源码解析
最近在部署K8s持久化存储插件时,需要按照CSI官网说明部署一个Deployment pod,由于我们的自研存储类型是文件存储不是块存储,所以部署pod不需要包含容器 external-attacher ,只需要包含 external-provisioner s...

lx10363阅读 3.6k

One 一个简洁的博客、微博客系统
代码:[链接]文档:[链接]系统预览首页:微博列表:微博详细:文章列表:文章详细:归档:搜索,目前只能依据分类、标签搜索😀:管理后台:

Eyeswap45阅读 2.3k评论 1

怎样用 PHP 来实现枚举?
在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见,...

唯一丶25阅读 6.3k评论 4

Git操作不规范,战友提刀来相见!
年终奖都没了,还要扣我绩效,门都没有,哈哈。这波骚Git操作我也是第一次用,担心闪了腰,所以不仅做了备份,也做了笔记,分享给大家。问题描述小A和我在同时开发一个功能模块,他在优化之前的代码逻辑,我在开...

王中阳Go5阅读 1.8k评论 2

封面图
无服务器的又一个里程碑,看亚马逊云科技 Serverless 的创新演进
“2022 年 12 月,在拉斯维加斯举办的 2022 亚马逊云科技 re:Invent 全球大会完美落幕,5 场主题论坛和数百场涵盖领导力、技术、行业、合作伙伴的分论坛以及丰富的技术应用展示,行业前沿技术,又明晰了诸多行业未...

思否编辑部3阅读 23.7k

微信公众号开发:自动回复文本/图片/图文消息/关键词回复/上传素材/自定义菜单
对接流程1、申请微信公众号测试账号URL:[链接]2、登录,配置开发者服务器URL和Token开发者服务器配置代码:config.php {代码...} URL是config.php在你服务器的URLToken是上面代码自己设置的Token搞定之后,就能完...

TANKING2阅读 10k

Hyperf 3.0 发布,PHP 新时代
在过去的一年半时间里,Hyperf 2.2 共发布了 35 个小版本,使 Hyperf 达到了一个前所未有的高度,这里也获得了一些不错的数据反馈。

huangzhhui3阅读 1.1k

封面图

为五斗米折腰

3.1k 声望
920 粉丝
宣传栏