Toran Proxy 公共存储库代理

前言

公司的网络最近一直不稳定,外加阿里的 composer 镜像更新不及时,导致无法用一些新的包。

为了避免测试环境构建时出现大量失败的场景,需要调研自建镜像的事宜。

由于之前公司的内部包是使用 Toran Proxy 管理的,故优先考虑了 Toran Proxy

相关环境

  • Docker
  • Toran Proxy v1.5.4

一些问题

  1. 目前 Toran Proxy 已经不维护了,其作者做了一个新的包管理,需要付费。

  2. Toran Proxy 目前仅支持 composer v1,项目需要使用 composer v2 的话,需要二开。

修改

支持composer v2

为了能间接支持 composer-v2,只需要修改 packages.json 中的 metadata-url,使其和 providers-lazy-url 的值一致即可。

当然,这并不是真正的 composer v2,实际是让 composer 使用 composer v1 的通道下载包。

修改相关代码如下:

php 复制代码
# 文件: /var/www/src/Toran/ProxyBundle/Service/Proxy.php:132
$data['metadata-url'] = str_replace('PACKAGE', '%package%', $lazyUrl);

重置packages.json

如果代码是在启动之后改的,需要删除已经缓存的 packages.json 文件,这样修改后的代码才会生效。

bash 复制代码
rm -rf /var/www/web/repo/packagist/packages.json

Dockerfile

如果使用的是作者提供的 Docker 镜像,那么我们只需要构建一个自己的镜像即可。

Dockerfile 复制代码
FROM cedvan/toran-proxy:1.5.4-1

RUN set -e; \
    sed -i "132a \$data['metadata-url'] = str_replace('PACKAGE', '%package%', \$lazyUrl);" /var/www/src/Toran/ProxyBundle/Service/Proxy.php; \
    rm -rf /var/www/web/repo/packagist/packages.json;

配置composer.json

配置很简单,安装好 Toran Proxy 之后,首页就表明了如何配置。

json 复制代码
{
    "config": {
        "process-timeout": 1800,
        "secure-http": false
    },
    "repositories": [
        {"type": "composer", "url": "http://域名/repo/private/"},
        {"type": "composer", "url": "http://域名/repo/packagist/"},
        {"packagist": false}
    ]
}

总结

这并不是一个完整的修改方案,目前是通过取巧的形式处理了当下的问题。

相关推荐
20年编程老鸟java+ai全栈12 分钟前
零基础搞定开发环境:PHP + Node.js + MongoDB + Python 一键安装全攻略
python·mongodb·node.js·php
爬山算法22 分钟前
Hibernate(47)Hibernate的会话范围(Scope)如何控制?
java·后端·hibernate
源码宝2 小时前
云HIS二次开发实施路径指南
后端·源码·二次开发·saas·云his·医院信息系统
李慕婉学姐4 小时前
Springboot旅游景点管理系统2fj40iq6(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
蓝眸少年CY4 小时前
(第八篇)spring cloud之zuul路由网关
后端·spring·spring cloud
long3165 小时前
弗洛伊德·沃肖算法 Floyd Warshall Algorithm
java·后端·算法·spring·springboot·图论
Loo国昌5 小时前
【LangChain1.0】第一篇:基础认知
后端·python·算法·语言模型·prompt
源代码•宸5 小时前
Golang原理剖析(channel面试与分析)
开发语言·经验分享·后端·面试·golang·select·channel
北辰当尹5 小时前
第27天 安全开发-PHP应用&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
android·安全·php
edisao5 小时前
四。SpaceX、网络化与未来的跨越:低成本、高频次的真正威胁
大数据·开发语言·人工智能·科技·php