chromabits/tutum-php

该包已被放弃,不再维护。未建议替代包。

用于 Tutum API 的 PHP 包装器

0.2.0 2015-02-21 23:48 UTC

This package is not auto-updated.

Last update: 2024-01-20 12:26:48 UTC


README

Tutum API 的部分 PHP 包装器

关于

这是一个用于查询和发现容器链接以及管理 Tutum 服务的简单库。然而,它未来可以扩展成一个完整的客户端。

安装

将以下依赖项添加到您的 composer.json 中

{
    "require": {
        "chromabits/tutum-php": "dev-master"
    },
    "minimum-stability": "dev"
}

在容器中使用

获取容器所有链接的示例

require_once(__DIR__ . '/vendor/autoload.php');

use \Chromabits\TutumClient\ClientFactory;
use \Chromabits\TutumClient\Support\EnvUtils;

$client = (new ClientFactory())->makeFromEnvironment();
$env = new EnvUtils();

$response = $client->container->show($env->getContainerUuid());

$container = $response->get();

var_dump($container->findLinks('some-other-service'));

部署服务

可以使用 PHP 编程方式在 Tutum 中部署服务

<?php

require_once(__DIR__ . '/vendor/autoload.php');

use Chromabits\TutumClient\Client;
use Chromabits\TutumClient\Requests\CreateServiceRequest;
use Chromabits\TutumClient\Entities\ContainerPort;

$client = new Client('someuser', 'vfjsblkdhbhkfhkajshkfj');

$nexusRequest = new CreateServiceRequest();

$nexusRequest->setName('nexus-staging');
$nexusRequest->setImage('eduard44/nexus:latest');
$nexusRequest->setTargetNumContainers(1);

$nexusRequest->addTag('staging');
$nexusRequest->addPort(new ContainerPort(80, ContainerPort::PROTO_TCP, 80, true));

$nexusRequest->setEnvironment('DB_DIALECT', 'mysql');
$nexusRequest->setEnvironment('DB_NAME', 'nexus');
$nexusRequest->setEnvironment('DB_USERNAME', 'nexus');
$nexusRequest->setEnvironment('DB_PASSWORD', 'suchSecretVarySafe');
$nexusRequest->setEnvironment('DB_HOST', 'some.host.hack');

$nexus = $client->service->create($nexusRequest)->get();

$client->service->start($nexus);

也支持其他服务操作

$client->service->stop($nexus);

$client->service->redeploy($nexus);

$client->service->terminate($nexus);

获取所有服务

service->index() 调用允许您查询您 Tutum 账户上的当前服务

<?php

require_once(__DIR__ . '/vendor/autoload.php');

use Chromabits\TutumClient\Client;
use Chromabits\TutumClient\Entities\Service;

$client = new Client('someuser', 'vfjsblkdhbhkfhkajshkfj');

// Get all services
$response = $client->service->index();

// Get only services which have the state "Init"
$response = $client->service->index(Service::STATE_INIT);

// Get services by name
$response = $client->service->index(null, 'wordpress');