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}
    ]
}

总结

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

相关推荐
码农水水1 天前
京东Java面试被问:HTTP/2的多路复用和头部压缩实现
java·开发语言·分布式·http·面试·php·wpf
没有bug.的程序员1 天前
Java 序列化:Serializable vs. Protobuf 的性能与兼容性深度对比
java·开发语言·后端·反射·序列化·serializable·protobuf
我爱娃哈哈1 天前
SpringBoot + Spring Security + RBAC:企业级权限模型设计与动态菜单渲染实战
spring boot·后端·spring
_童年的回忆_1 天前
【PHP】关于守护进程报错:SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
开发语言·oracle·php
edisao1 天前
六、 读者高频疑问解答 & 架构价值延伸
大数据·开发语言·人工智能·科技·架构·php
catchadmin1 天前
Laravel12 + Vue3 的免费可商用 PHP 管理后台 CatchAdmin V5.1.0 发布 新增 AI AGENTS 配置
开发语言·php
小王不爱笑1321 天前
SpringBoot 配置文件
java·spring boot·后端
想用offer打牌1 天前
Spring AI vs Spring AI Alibaba
java·人工智能·后端·spring·系统架构
码农幻想梦1 天前
实验五 spring入门及IOC实验
java·后端·spring
a程序小傲1 天前
蚂蚁Java面试被问:向量数据库的相似度搜索和索引构建
开发语言·后端·python·架构·flask·fastapi