te4g / docker-client

一个用于与Docker API交互的PHP客户端

v1.43.1 2023-12-04 17:47 UTC

This package is auto-updated.

Last update: 2024-09-04 19:23:16 UTC


README

如何使用

composer require te4g/php-docker-client
<?php

require __DIR__ . '/vendor/autoload.php';

use Te4g\DockerClient\DockerClient;

$client = DockerClient::create();

var_dump($client->containerList());

如何构建

  1. https://docs.dockerd.com.cn/engine/api/latest/ 下载docker API定义,保存为 open-api.yaml
  2. 按照以下步骤使用Jane从API定义生成PHP类: https://jane.readthedocs.io/en/latest/ a. 安装依赖项
    composer require jane-php/open-api-runtime
    composer require symfony/http-client
    composer require --dev jane-php/open-api-2
    composer require --dev friendsofphp/php-cs-fixer
    b. 创建Jane配置文件 .jane-openapi
    <?php
    
    return [
        'openapi-file' => __DIR__ . '/open-api.yaml',
        'namespace' => 'Vendor\Library\Generated',
        'directory' => __DIR__ . '/generated',
    ];
    c. 生成PHP类
    php vendor/bin/jane-openapi generate
  3. 更新 composer.json 文件以包含生成的类
    {
      "autoload": {
        "psr-4": {
          "Vendor\\Library\\Generated\\": "generated/"
        }
      }
    }
  4. 运行 composer dump-autoload 更新自动加载器
  5. 通过创建一个新的PHP文件并添加以下代码来测试是否成功
    <?php
    
    require __DIR__ . '/vendor/autoload.php';
    
    use Symfony\Component\HttpClient\Psr18Client;
    
    $httpClient = (new Psr18Client())->withOptions([
    'base_uri' => 'https://',
    'bindto' => '/var/run/docker.sock'
    ]);
    
    $dockerClient = Vendor\Library\Generated\Client::create(httpClient: $httpClient);
    
    $containers = $dockerClient->containerList();
    
    foreach ($containers as $container) {
    echo $container->getId() . "\n";
    }