0. 相关文章
1. 通过插件扩展支持 Composer(PHP)
详见 github.com/sonatype-ne…。简述如下:
1.1 下载扩展包
# 下载 nexus-repository-composer kar 包(可以理解成另一种 jar 包)
# (这是当前最新的版本)
curl -O https://repo1.maven.org/maven2/org/sonatype/nexus/plugins/nexus-repository-composer/0.1.9/nexus-repository-composer-0.1.9-bundle.kar
# 将文件 copy 到容器的指定目录
docker cp nexus-repository-composer-0.1.9-bundle.kar nexus:/opt/sonatype/nexus/deploy
1.2 重启容器,自动安装
# nexus docker 官方说,stop 的时候要追加 时间,避免数据库持久化没做完就被杀掉
docker stop --time=120 nexus
docker start nexus
1.3 访问验证
-
浏览器访问 http://localhost:8081 验证(类似第一次启动,安装插件也会稍慢,要做很多初始化)
-
再次新建仓库,发现有了新的类型:
2. 新建 composer 仓库
2.1 新建 composer (proxy)
-
点击新建:
-
选择 composer (proxy):
-
填写必要信息:
- 仓库名 composer-official-proxy
- 远端地址:repo.packagist.org
- 其他默认,点击保存(注意保存按钮要滚到页面最下面)
- 查看该仓库:
2.2 新建 composer (hosted)
-
和之前的操作类似,新建仓库,选择 composer (hosted)
-
填写必要信息:
- 仓库名:composer-my-private
- 其他默认,点击保存
-
查看该仓库:
-
查看该仓库(略)
2.3 新建 composer (group)
- 和之前的操作类似,新建仓库,选择 composer (group)
- 填写必要信息:
- 仓库名:composer-public
- 选择下属成员仓库(引用该仓库时,下属仓库里的软件也能被依赖)
- 其他默认,点击保存
- 查看该仓库:
3. 上传私有组件到私有仓库
- 生成包,对已有 composer php 项目做压缩:
mkdir php-composer-package && cd php-composer-package
composer init --name=my-private/php-composer-package --require="guzzlehttp/guzzle:^7.0" --autoload=src/ -n
# 一个已有的 composer php 项目,目录结构如下:
php-composer-package/
├── composer.json
├── src/
├── ...
# 压缩
zip -r php-composer-package.zip composer.json src/
# 或者去gitlab/github里打个tag,点击下载
- 上传:
- 点击 Upload,选择 composer-my-private:
- 上传文件,填写必要信息:
4. 使用私有源
以刚才的 composer 为例,依赖私有源 http://localhost:8081/repository/composer-public/ 为例:
4.1 引入私有源
有两种引入源的方式:
- 全局引入(影响所有项目)
- 局部引入(在某个项目内,只影响这个项目)
# 全局引入
composer config -g repositories.my-private-repo composer http://localhost:8081/repository/composer-public/
# 只在当前项目内引入删除 -g
# 这句有必要执行,默认 composer 是禁止 http 源请求的(同上,-g 可以全局)
composer config secure-http false
# 更新,验证
composer update -vvv
# 仔细看输出,有大量的包是从 http://localhost:8081/repository/composer-public/ 下载
4.2 依赖私有软件包
# 以刚才上传的 my-private/php-composer-package 为例
composer require my-private/php-composer-package:~0.1
# 构建过程中会下载 php-composer-package,也会下载他的依赖