composer require te4g/php-docker-client
<?php
require __DIR__ . '/vendor/autoload.php';
use Te4g\DockerClient\DockerClient;
$client = DockerClient::create();
var_dump($client->containerList());
- 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
b. Create the Jane configuration file
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
.jane-openapi
c. Generate the PHP classes<?php return [ 'openapi-file' => __DIR__ . '/open-api.yaml', 'namespace' => 'Vendor\Library\Generated', 'directory' => __DIR__ . '/generated', ];
php 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"; }