• Docker搭建内网 composer satis 代码仓库


    拉取 composer/satis 镜像

    docker pull composer/satis
    

    说明: 下文说明存放数据的结构是

    D:workspacedockerlampdocker>nodetree -L 3
    .
    ├── docker-compose.yml
    ├── docker_data
    │   ├── composer # 存放satis 容器运行时使用到的配置文件的文件夹
    │   │   ├── auth.json
    │   │   ├── cache
    │   │   ├── composer.json
    │   │   └── config.json
    │   ├── composer_public # 编译包输出的文件夹
    │   │   ├── dist  # 编译后会自动生成的文件夹
    │   │   ├── include # 编译后会自动生成的文件夹
    │   │   ├── index.html # 编译后会自动生成的文件
    │   │   ├── p2 # 编译后会自动生成的文件夹
    │   │   └── packages.json# 编译后会自动生成的文件
    ├── README.md
    ├── satis.sh
    

    auth.json

    {
    
    }
    

    composer.json

    {
    
    }
    

    config.json

    {
        "config": {
            "secure-http": false,
            "optimize-autoloader": false,
            "preferred-install": "dist",
            "sort-packages": true,
            "platform": {
            }
        },
        "repositories": {
            "packagist": {
                "type": "composer",
                "url": "https://mirrors.aliyun.com/composer/"
            }
        }
    }
    
    

    构建模块扩展

    主要修改 config.json

    {
        "name": "composer_satis_test",
        "homepage": "http://local.satis.com",
        "repositories": [
            {
                "type": "git",
                "name": "zhanghuizong/composer_satis_test",
                "url": "https://gitee.com/zhanghuizong/composer_satis_test.git"
            }
        ],
        "archive": {
            "directory": "dist",
            "format": "zip",
            "skip-dev": false,
            "prefix-url": "http://local.satis.com"
        }
    }
    

    摘抄自参考博文

    关键词 描述
    repositories 指定去哪获取包
    require 指定获取哪些包,如果想获取所有包,使用require-all: true
    archive.directory dist 文件存放的路径(取代 output-dir)
    archive.format 可选,默认:zip, 支持两种压缩格式:ziptar。build时采用的压缩格式
    archive.skip-dev 可选,默认情况下为 false,启用时(true)satis 不会为分支机构创建下载
    archive.prefix-url 可选,下载位置,主页(来自satis.json),默认情况下是目录

    composer 官网说明:https://docs.phpcomposer.com/articles/handling-private-packages-with-satis.html
    satis GitHub代码:https://github.com/composer/satis

    shell 脚本

    satis.sh

    #!/usr/bin/env bash
    
    docker run --rm --init -it -v "$(pwd)"/docker_data/composer/config.json:/satis.json:ro 
    -v "$(pwd)"/docker_data/composer_public:/build 
    -v "$(pwd)"/docker_data/composer:/composer 
    composer/satis build /satis.json /build "$@"
    
    chmod +x satis.sh
    

    增加快捷访问

    编辑文件: vi ~/.bashrc

    alias satis='docker run --rm --init -it -v "$(pwd)"/docker_data/composer/config.json:/satis.json:ro -v "$(pwd)"/docker_data/composer_public:/build -v "$(pwd)"/docker_data/composer:/composer composer/satis build /satis.json /build'
    

    用法

    # 构建所有代码仓库模块
    sh satis.sh
    
    # 安装指定模块
    sh satis.sh zhanghuizong/composer_satis_test
    

    注意
    指定模块安装,repositories 节点中必须配置 name 字段,同时与 require 节点配置对应上

    nginx 配置

    server {
            listen        80;
            server_name  local.satis.com;
            root   "/data/httpd/docker-config/composer_satis/test/public/";
            location / {
                index index.php index.html;
            }
    
            location ~ .php(.*)$ {
                fastcgi_pass   php:9000;
                fastcgi_index  index.php;
                fastcgi_split_path_info  ^((?U).+.php)(/?.+)$;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                fastcgi_param  PATH_INFO  $fastcgi_path_info;
                fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
                include        fastcgi_params;
            }
    }
    

    可以通过 http://ip 访问到私有仓库界面了,类似访问 https://packagist.org/

    或者nginx容器

    nginx 80 端口衍射为 10090

    docker run --name some-nginx -p 10090:80 -v /some/composer_public:/usr/share/nginx/html:ro -d nginx
    

    就可以通过 http://ip:10090 访问到私有仓库界面了,类似访问 https://packagist.org/,只是私有的稍微简陋些,但已足够使用了

    项目中使用

    在自己项目中的composer.json 中添加或修改类似如下内容

    {
        "require":
        {
            "test/package1": "*"
        }
        "config":
        {
            "secure-http": false
        }
        "repositories":
        {
            "packagist":
            {
                "type": "composer",
                "url": "http://127.0.0.1:10090"
            }
        }
    }
    

    require 中,可以改为 "test/package1": "dev-master",避免出现类似以下错误:

    Could not find a version of package xxx/yyy matching your minimum-stability (stable).Require it with an explicit version constrai
    

    后记:

    1. 如果 vendor文件夹在版本管理中不是忽略的,在项目中使用之前,建议是先打一个tag,然后推送 tagconfig.json中填写的git仓库地址中,进行一次 satis 编译。因为我发现安装 dev-master版本的库,在已安装的这个库下面会有一个 .git 文件夹,这样这个库就是 git的一个子模块了,在部署或者其它人无法同步下来,只能重新删除,再次安装这个私有库。

    https://github.com/composer/satis的社区工具https://github.com/ludofleury/satisfy

    satis.json

    {
        "name": "localhost/respository",
        "description": "company private composer repository",
        "homepage": "http://192.168.0.201:10090",
        "output-dir": "public",
        "output-html": true,
        "require-all": false,
        "require-dependencies": false,
        "require-dev-dependencies": false,
        "require-dependency-filter": false,
        "repositories": [
        ],
        "archive": {
            "directory": "dist",
            "format": "zip",
            "skip-dev": true,
            "whitelist": [],
            "blacklist": [],
            "prefix-url": "http://192.168.0.201:10090",
            "checksum": true
        },
        "minimum-stability": "dev",
        "providers": false,
        "pretty-print": true
    }
    
    

    在进入 http://ip/admin中,点击 Edit configuration,其中 config 填写的值是:

     "config": {
            "secure-http": false,
            "preferred-install": "dist",
        }
    

    References

  • 相关阅读:
    The required MAP capability is more than the supported max container capability in the cluster. Killing the Job. mapResourceRequest: <memory:2048, vCores:2> maxContainerCapability:<memory:1024, vCores
    centos6.8安装cdh6.0.0
    oracle拼接sql
    数据插入不覆盖更新,设置定时任务
    支持向量机在 R 语言中的实现和使用
    怎么彻底去掉office365
    汽车电子软件规范学习
    ISO/IEC TS 17961 C Secure Coding Rules
    UML图
    Gitflow工作流程
  • 原文地址:https://www.cnblogs.com/fsong/p/14412344.html
Copyright © 2020-2023  润新知