8 Commits
0.0.4 ... 0.0.7

Author SHA1 Message Date
Travis Tomka
c3fee31737 Add the docker-compose logs command. 2018-04-28 13:14:06 -06:00
Travis Tomka
8ff8ed66bf Add the docker-composer ps command. 2018-04-28 12:33:19 -06:00
Travis Tomka
2800a55776 Add docker compose pull command to the project. 2018-04-14 13:36:15 -06:00
Travis Tomka
0bd195e5a9 Merge branch 'master' of github.com:droath/robo-docker-compose 2018-02-25 18:11:30 -07:00
Travis Tomka
0d799fca6c Add docker-compose exec command. 2018-02-25 18:10:48 -07:00
Travis Tomka
a5c405ec02 Merge pull request #2 from raphaelstolt/improvement-installation-documentation
Improvement installation documentation
2017-10-05 08:59:18 -06:00
Raphael Stolt
c3cc0c2e1f Let Composer figure out the latest version. 2017-10-05 02:52:35 +02:00
Raphael Stolt
65893fc1a9 Emphasise it's dev dependency character. 2017-10-05 02:51:54 +02:00
8 changed files with 396 additions and 4 deletions

View File

@@ -7,7 +7,7 @@ Run docker compose commands from the Robo task runner.
First, you'll need to download the robo docker compose library using composer:
```bash
composer require droath/robo-docker-compose:~0.0.1
composer require --dev droath/robo-docker-compose
```
### Example
@@ -33,6 +33,10 @@ composer require droath/robo-docker-compose:~0.0.1
The following commands have been implemented:
- docker-compose up
- docker-compose ps
- docker-compose logs
- docker-compose pull
- docker-compose exec
- docker-compose down
- docker-compose start
- docker-compose restart

View File

@@ -45,7 +45,7 @@ trait DockerServicesTrait
/**
* {@inheritdoc}
*/
protected function getCommand()
public function getCommand()
{
// Append the services to the end of the command.
return parent::getCommand() . ' ' . implode(' ', $this->services);

View File

@@ -4,13 +4,14 @@ namespace Droath\RoboDockerCompose\Task;
use Droath\RoboDockerCompose\ExecutableArguments;
use Robo\Common\ExecOneCommand;
use Robo\Contract\CommandInterface;
use Robo\Exception\TaskException;
use Robo\Task\BaseTask;
/**
* Docker compose base class.
*/
abstract class Base extends BaseTask
abstract class Base extends BaseTask implements CommandInterface
{
use ExecOneCommand;
use ExecutableArguments;
@@ -128,7 +129,7 @@ abstract class Base extends BaseTask
*
* @return string
*/
protected function getCommand()
public function getCommand()
{
return "{$this->executable} {$this->executableArgs} {$this->action} {$this->arguments}";
}

153
src/Task/Execute.php Normal file
View File

@@ -0,0 +1,153 @@
<?php
namespace Droath\RoboDockerCompose\Task;
use Robo\Contract\CommandInterface;
/**
* Docker compose execute command.
*/
class Execute extends Base
{
/**
* Execute command.
*
* @var string
*/
protected $command;
/**
* Execute container.
*
* @var string.
*/
protected $container;
/**
* {@inheritdoc}
*/
protected $action = 'exec';
/**
* Set docker container.
*
* @param $container
* The container name.
* @return $this
*/
public function setContainer($container)
{
$this->container = $container;
return $this;
}
/**
* Set execute command.
*
* @param string|CommandInterface $command
* The command to execute.
*
* @return $this
*/
public function exec($command)
{
if ($command instanceof CommandInterface) {
$command = $command->getCommand();
}
$this->command = $command;
return $this;
}
/**
* Run command in the background.
*
* @return $this
*/
public function detachedMode()
{
$this->arg('-d');
return $this;
}
/**
* Give extended privileges to the process.
*
* @return $this
*/
public function privileged()
{
$this->option('privileged');
return $this;
}
/**
* Run the command as this user.
*
* @param $user
* The user on which to run the command under.
*
* @return $this
*/
public function user($user)
{
$this->option('user', $user);
return $this;
}
/**
* Disable pseudo-tty allocation.
*
* @return $this
*/
public function disablePseudoTty()
{
$this->arg('-T');
return $this;
}
/**
* Index of the container.
*
* @param $index
* The container index.
*
* @return $this
*/
public function index($index)
{
$this->option('index', $index);
return $this;
}
/**
* Set environment variables
*
* @param $key
* The environment key.
* @param $value
* The environment value.
*
* @return $this
*/
public function envVariable($key, $value)
{
$this->option('env', "{$key}={$value}");
return $this;
}
/**
* {@inheritdoc}
*/
public function getCommand()
{
return parent::getCommand() . "{$this->container} {$this->command}";
}
}

77
src/Task/Logs.php Normal file
View File

@@ -0,0 +1,77 @@
<?php
namespace Droath\RoboDockerCompose\Task;
use Droath\RoboDockerCompose\DockerServicesTrait;
use Robo\Exception\TaskException;
/**
* Define the docker compose logs task.
*/
class Logs extends Base
{
use DockerServicesTrait;
/**
* {@inheritdoc}
*/
protected $action = 'logs';
/**
* Produce monochrome output.
*
* @return $this
*/
public function noColor()
{
$this->option('no-color');
return $this;
}
/**
* Follow log output.
*
* @return $this
*/
public function follow()
{
$this->option('follow');
return $this;
}
/**
* Show timestamps.
*
* @return $this
*/
public function timestamps()
{
$this->option('timestamps');
return $this;
}
/**
* Number of lines to show from the end of the logs for
* each container.
*
* @param string $value
*
* @return $this
* @throws TaskException
*/
public function tail($value = 'all')
{
if ($value !== 'all' && !is_numeric($value)) {
throw new TaskException(
__CLASS__,
'Provided argument value is invalid.'
);
}
$this->option('tail', $value);
return $this;
}
}

59
src/Task/Ps.php Normal file
View File

@@ -0,0 +1,59 @@
<?php
namespace Droath\RoboDockerCompose\Task;
use Droath\RoboDockerCompose\DockerServicesTrait;
/**
* Define the docker composer ps command.
*/
class Ps extends Base
{
use DockerServicesTrait;
/**
* {@inheritdoc}
*/
protected $action = 'ps';
/**
* Only display IDs.
*
* @return $this
*/
public function quiet()
{
$this->option('quiet');
return $this;
}
/**
* Display services.
*
* @return $this
*/
public function services()
{
$this->option('services');
return $this;
}
/**
* Filter services by a property.
*
* @param string $key
* The filter property key.
* @param string $value
* The filter property value.
*
* @return $this
*/
public function filter($key, $value)
{
$this->option('filter', "{$key}={$value}");
return $this;
}
}

66
src/Task/Pull.php Normal file
View File

@@ -0,0 +1,66 @@
<?php
namespace Droath\RoboDockerCompose\Task;
use Droath\RoboDockerCompose\DockerServicesTrait;
/**
* Define Docker compose pull command.
*/
class Pull extends Base
{
use DockerServicesTrait;
/**
* {@inheritdoc}
*/
protected $action = 'pull';
/**
* Pull what it can and ignores images with pull failures.
*
* @return $this
*/
public function ignoreFailures()
{
$this->option('ignore-pull-failures');
return $this;
}
/**
* Pull multiple images in parallel.
*
* @return $this
*/
public function parallel()
{
$this->option('parallel');
return $this;
}
/**
* Pull without printing progress information.
*
* @return $this
*/
public function quiet()
{
$this->option('quiet');
return $this;
}
/**
* Also pull services declared as dependencies.
*
* @return $this
*/
public function includeDeps()
{
$this->option('include-deps');
return $this;
}
}

View File

@@ -15,6 +15,22 @@ trait loadTasks
return $this->task(Up::class, $pathToDockerCompose);
}
/**
* Docker compose ps task.
*/
protected function taskDockerComposePs($pathToDockerCompose = null)
{
return $this->task(Ps::class, $pathToDockerCompose);
}
/**
* Docker compose logs task.
*/
protected function taskDockerComposeLogs($pathToDockerCompose = null)
{
return $this->task(Logs::class, $pathToDockerCompose);
}
/**
* Docker compose down task.
*/
@@ -31,6 +47,14 @@ trait loadTasks
return $this->task(Pause::class, $pathToDockerCompose);
}
/**
* Docker compose pull task.
*/
protected function taskDockerComposePull($pathToDockerCompose = null)
{
return $this->task(Pull::class, $pathToDockerCompose);
}
/**
* Docker compose start task.
*/
@@ -46,4 +70,12 @@ trait loadTasks
{
return $this->task(Restart::class, $pathToDockerCompose);
}
/**
* Docker compose execute task.
*/
protected function taskDockerComposeExecute($pathToDockerCompose = null)
{
return $this->task(Execute::class, $pathToDockerCompose);
}
}