te4g / docker-client
A PHP client to interact with Docker API
v1.43.1
2023-12-04 17:47 UTC
Requires
- jane-php/open-api-runtime: ^7.5
- nyholm/psr7: ^1.8
- symfony/http-client: ^6.4|^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.40
README
How to use
composer require te4g/php-docker-client
<?php require __DIR__ . '/vendor/autoload.php'; use Te4g\DockerClient\DockerClient; $client = DockerClient::create(); var_dump($client->containerList());
How to build
- Download the docker API definition from https://docs.docker.com/engine/api/latest/, save it as
open-api.yaml
- Follow the instructions about how to use Jane to generate the PHP classes from the API definition: https://jane.readthedocs.io/en/latest/
a. Install the dependencies
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. Create the Jane configuration file.jane-openapi
<?php return [ 'openapi-file' => __DIR__ . '/open-api.yaml', 'namespace' => 'Vendor\Library\Generated', 'directory' => __DIR__ . '/generated', ];
c. Generate the PHP classesphp vendor/bin/jane-openapi generate
- Update the
composer.json
file to include the generated classes{ "autoload": { "psr-4": { "Vendor\\Library\\Generated\\": "generated/" } } }
- Run
composer dump-autoload
to update the autoloader - Try if it works by creating a new PHP file and adding the following code
<?php require __DIR__ . '/vendor/autoload.php'; use Symfony\Component\HttpClient\Psr18Client; $httpClient = (new Psr18Client())->withOptions([ 'base_uri' => 'http://localhost', 'bindto' => '/var/run/docker.sock' ]); $dockerClient = Vendor\Library\Generated\Client::create(httpClient: $httpClient); $containers = $dockerClient->containerList(); foreach ($containers as $container) { echo $container->getId() . "\n"; }