当前位置: 首页>数据库>正文

podman pull私有仓库 composer 私有库

基础知识

引入的库必须要有composer.json,所以composer.json属性必须要有了解

// composer.json
{
  "name": "mysql/package", 	// 包名,必填。且必须有“/”。引入时,会有错误提示的正则表达式
  "description": "this is mysql package", // 包介绍,非必填。
  "version": "v1.0.0", 	// 版本,非必填,通常是不用的,都是通过tag去当版本号
  "type": "library", // 类型,非必填,默认就是library
  "keywords": ["logging", "events"],	// 关键字,非必填
	"license": "Apache-2.0", // 许可证,非必填
  "authors": [	// 作者,非必填
     {
       "name": "Nils Adermann",
       "email": "naderman@naderman.de",
       "homepage": "https://www.naderman.de",
       "role": "Developer"
     },
  ],	
  "require": {
    "monolog/monolog": "1.0.1"	// 引用
  },
  "autoload": [],	// 自动引入,psr4
  "repository": [	// 自定义存储库,就是源(私有库或者其他公开的库源)。这个放到后面下一张着重讲
    
  ]
}

官方文档:https://getcomposer.org/doc/04-schema.md#json-schema

私有库引入

方法

通过repository指定引入库的放,composer提供了3种方法|:

  • VSC:通过版本控制器
  • composer:通过依赖管理器
  • Packagist

前提

以github为例。

  1. 创建一个私有仓库,仓库内添加composer.json
{
  "name": "qsl/fpmdocker",	// 我的私有报名
  "auth": [
    {
       "name": "qsl",
       "homepage": "",
       "role": "Developer"
     },
  ],
  "requires": {	// 我的包引用的包名
    "monolog/monolog": "dev-master"
  }
}

vsc

通过版本控制器获取包,直接通过git/svn验证,然后拉取包

// 这个项目需要引用qsl/fpmdocker包
// composer.json
{
  "name": "qsl/project",	// 我的私有报名
  "auth": [
    {
       "name": "qsl",
       "homepage": "",
       "role": "Developer"
     },
  ],
  "repositories": [	// 指定源
    {
      "type": "vsc",	// 拉去类型
      "url": "git@github.com:qiushenglei/nginx-fpm-docker.git"
		}
  ],
  "requires": {	// 我的包引用的包名
    "qsl/fpmdocker": "~v1.0.2"	// 包名 + 版本号(分支 或者 tag)
  }
}

composer update

satis

这个是一个简单的个人私有包管理工具

https://github.com/composer/satis

需要搭建一个satis服务,去扫描指定的仓库内容(他会帮你读出所有满足条件的tag 和 branch),做成一个私有源

  1. 下载satis
composer create-project composer/satis:dev-main

这里遇到一个报错,提示是composer/stais这个有个大写的引用,直接去composer.json把大写改成小写就行

  1. path/to/satis目录下创建一个satais.json 文件
// satis.json
{
 "name": "qsl_satis",
 "homepage": "https://qsl.satis.com",	// 以后包引用的地址
 "repositories": [	
   {
     "type": "git",									// satis通过csv去拉A取包
     "url": "git@github.com:qiushenglei/nginx-fpm-docker.git"
   },
   {
     "type": "git",									// satis通过csv去拉B取包
     "url": "git@github.com:qiushenglei/example.git"
   }
 ],
 "require-all": false,
 "require-dependencies": true,
 "require-dev-dependencies": true,
 "require": {
   "php-amqplib/php-amqplib": "^v3.5.3",
   "qiushenglei/fpmdocker": "*"
 },
 "archive": {
   "directory": "dist",
   "format": "zip",
   "skip-dev": true
 },
 "config": {
   "secure-http": false
 }
}
  1. 通过php脚本去获取包
php bin/satis build <configuration-file> <output-directory>
  1. 项目通过 指定 私有的源,来拉取数据
// 
// 这个项目需要引用qsl/fpmdocker包
// composer.json
{
  "name": "qsl/project",	// 我的私有报名
  "auth": [
    {
       "name": "qsl",
       "homepage": "",
       "role": "Developer"
     },
  ],
  "repositories": [	// 指定源
    {
      "type": "composer",	// 拉去类型
      "url": "https://qsl.satis.com"	// 私有源地址
		}
  ],
  "requires": {	// 我的包引用的包名
    "qsl/fpmdocker": "~v1.0.2"	// 包名 + 版本号(分支 或者 tag)
  }
}

以下列举一下常用于源

https://packagist.org/ (官方源)

https://mirrors.aliyun.com/composer/ (阿里云)

之前遇到一个问题,有一个文件丢失导致系统启动失败,composer.json引入的包指向的是dev-master分支,去github去查看master分支是有这个文件。去官方源看到的包版本的commit也是master分支的commit。

后来发现,composer.json的 repositories.type == composer 修改了源,指向的是阿里云源。阿里云源没有更新版本控制,还是只指向了老版本。

这个问题的反思就是:如果要用私有源(satis服务),就开个定时脚本 通过satis去扫描仓库,更新源内容


https://www.xamrdz.com/database/6x51961505.html

相关文章: