Joli\JoliCi\ServiceManager::start PHP Method

start() public method

Start services for a Job
public start ( Joli\JoliCi\Job $build )
$build Joli\JoliCi\Job
    public function start(Job $build)
    {
        foreach ($build->getServices() as $service) {
            try {
                $this->docker->getImageManager()->find(sprintf('%s:%s', $service->getRepository(), $service->getTag()));
            } catch (ClientErrorException $e) {
                if ($e->getResponse()->getStatusCode() == 404) {
                    $buildStream = $this->docker->getImageManager()->create(null, ['fromImage' => sprintf('%s:%s', $service->getRepository(), $service->getTag())], ImageManager::FETCH_STREAM);
                    $buildStream->onFrame($this->logger->getBuildCallback());
                    $buildStream->wait();
                } else {
                    throw $e;
                }
            }
            $serviceConfig = $service->getConfig();
            $containerConfig = new ContainerConfig();
            $containerConfig->setImage(sprintf('%s:%s', $service->getRepository(), $service->getTag()));
            $containerConfig->setLabels(['com.jolici.container=true']);
            if (isset($serviceConfig['Env'])) {
                $containerConfig->setEnv($serviceConfig['Env']);
            }
            $containerCreateResult = $this->docker->getContainerManager()->create($containerConfig);
            $this->docker->getContainerManager()->start($containerCreateResult->getId());
            $service->setContainer($containerCreateResult->getId());
        }
    }