idrislab /
使用 artisan 自动化您的 docker 容器
v0.2.1
2016-12-06 12:31 UTC
Requires
- php: >=5.6.4
- docker-php/docker-php: ^1.24
- symfony/process: 3.1.*
This package is not auto-updated.
Last update: 2024-09-28 19:36:31 UTC
README
在 Laravel 内部自动化您的 docker 容器
设置
需求
Docker >= 1.13
Laravel >= 5.3.*
PHP >= 5.6.4
安装
composer require idrislab/laravel-docker-containers
设置以下环境变量(在您的 .env 文件中)
DOCKER_SOCKET=unix:///var/run/docker.sock
创建一个新的 artisan 命令
php artisan make:command Containers
在 app/Console/Kernel.php 中将新命令注册到 artisan
protected $commands = [ Commands\Containers::class, ];
更新您的 Containers 命令以注册默认提供的容器
<?php namespace App\Console\Commands; use luisgros\docker\containers\MySQL; use luisgros\docker\containers\Redis; use luisgros\docker\ContainersCommand; class Containers extends ContainersCommand { protected $containers = [ MySQL::class, Redis::class, ]; }
用法
php artisan containers <start|stop|restart> [container(s)]
示例
启动所有容器
php artisan containers start
停止和启动多个容器
php artisan containers start mysql redis
停止一个容器
php artisan containers stop mysql
添加自定义容器
在 app/ 目录中创建一个名为 Containers 的目录,并创建一个名为 MySQLGroupReplication.php 的文件,内容如下:
<?php namespace App\Containers; use luisgros\docker\containers\Container; class MySQLGroupReplication extends Container { /** * @var string */ public $repo = 'mysql/mysql-gr'; /** * @var string */ public $tag = 'latest'; /** * @var string */ public $network = 'group1'; /** * @var string */ public $instances = 3; /** * @return array */ public function runCommand() { return [ '-d --rm --net=group1 -e MYSQL_ROOT_PASSWORD=ENV[DB_PASSWORD] \\'. '-e MYSQL_REPLICATION_USER=ENV[DB_PASSWORD] -e MYSQL_REPLICATION_PASSWORD=ENV[DB_PASSWORD] \\'. 'mysql/mysql-gr --group_replication_group_seeds=\'ENV[CONTAINER_I2]:6606,ENV[CONTAINER_I3]:6606\' \\'. '--server-id=ENV[INSTANCE_ID]', '-d --rm --net=group1 -e MYSQL_ROOT_PASSWORD=ENV[DB_PASSWORD] \\'. '-e MYSQL_REPLICATION_USER=ENV[DB_PASSWORD] -e MYSQL_REPLICATION_PASSWORD=ENV[DB_PASSWORD] \\'. 'mysql/mysql-gr --group_replication_group_seeds=\'ENV[CONTAINER_I1]:6606,ENV[CONTAINER_I3]:6606\' \\'. '--server-id=ENV[INSTANCE_ID]', '-d --rm --net=group1 -e MYSQL_ROOT_PASSWORD=ENV[DB_PASSWORD] \\'. '-e MYSQL_REPLICATION_USER=ENV[DB_PASSWORD] -e MYSQL_REPLICATION_PASSWORD=ENV[DB_PASSWORD] \\'. 'mysql/mysql-gr --group_replication_group_seeds=\'ENV[CONTAINER_I1]:6606,ENV[CONTAINER_I2]:6606\' \\'. '--server-id=ENV[INSTANCE_ID]', ]; } public function preCommand() { $this->docker('network create group1 &>/dev/null'); } }
更新您的 app/Console/Commands/Containers.php 命令以注册新容器
<?php namespace App\Console\Commands; use App\Containers\MySQLGroupReplication; use luisgros\docker\containers\MySQL; use luisgros\docker\containers\Redis; use luisgros\docker\ContainersCommand; class Containers extends ContainersCommand { protected $containers = [ MySQL::class, Redis::class, MySQLGroupReplication::class, ]; }
启动您的容器
php artisan containers start mysqlgroupreplication