theod02 / castor-docker-runner
Castor的Docker运行器(此运行器将用于在Docker容器中运行Castor或在内容器中运行相同的命令)
dev-master
2024-06-06 17:10 UTC
This package is auto-updated.
Last update: 2024-09-06 17:38:47 UTC
README
castor-docker-runner
是一个PHP库,旨在简化命令的执行,尤其是在Docker容器内。此库与Castor项目兼容。
目录
安装
要安装此库,请使用以下Composer命令
castor composer require castor/castor-docker-runner
用法
RunnerTrait
RunnerTrait
提供了执行命令的方法。它作为运行命令的构建器。以下是如何使用它的示例
use Castor\Runner\RunnerTrait; class MyRunner { use RunnerTrait; public function getBaseCommand() { return 'composer' } } $runner = new MyRunner(); $runner->add('install')->run(); // Run the command "composer install"
DockerRunnerTrait
DockerRunnerTrait
提供了在Docker容器中执行命令的方法。它添加了构建带有Docker选项的命令的方法。以下是如何使用它的示例
use Castor\Runner\DockerRunnerTrait; class SymfonyRunner { use RunnerTrait { RunnerTrait::__construct as private __runnerTraitConstruct; RunnerTrait::runCommand as private __runCommand; } use DockerRunnerTrait; public function __construct(?Context $castorContext = null) { $this->__runnerTraitConstruct($castorContext); } protected function getBaseCommand(): array { return ['php', 'bin/console']; } public function getContainerDefinition(): ContainerDefinition { return new ContainerDefinition( composeName: 'my-container-compose-name', name: 'my-container-name', workingDirectory: '/app', user: 'www-data', envs: [], ); } } $sfRunner = new SymfonyRunner(); $sfRunner ->add('cache:clear') ->add('--env', 'prod') ->run(); // Run the command "docker-compose exec -T my-container-compose-name php bin/console cache:clear --env=prod"
DockerRunnerTrait
在在不同的环境中运行脚本时提供了显著的优势。它允许您在Docker容器内执行命令,并智能地确定脚本是从主机还是从Docker容器内运行的。
当脚本从主机运行时,命令将使用 docker exec
在Docker容器中执行。例如,如果您从主机运行脚本,它将执行以下命令
docker exec -it --workdir /app --user www-data my-container-name php bin/console cache:clear --env=prod
然而,如果脚本是从Docker容器内运行的,命令将直接在容器中执行,无需使用 docker exec
。在这种情况下,将执行以下命令
php bin/console cache:clear --env=prod
此功能简化了命令执行过程,使您的代码更简洁、更易于维护。如果没有此库,您将不得不手动检查脚本是否在Docker容器内运行,然后相应地构建命令,如下面的示例所示
$runningInDocker = file_exists('/.dockerenv'); if ($runningInDocker) { $command = ['php', 'bin/console', 'cache:clear', '--env=prod']; } else { $command = ['docker', 'exec', '-it', '--workdir', '/app', '--user', 'www-data', 'my-container-name', 'php', 'bin/console', 'cache:clear', '--env=prod']; } run($command);
使用 DockerRunnerTrait
,此过程被抽象化,使您能够专注于应用程序的逻辑,而不是命令执行的细节。
API参考
RunnerTrait
:此特性提供执行命令的方法。DockerRunnerTrait
:此特性提供在Docker容器内执行命令的方法。DockerRunner
:此类使用RunnerTrait
执行Docker命令。DockerUtils
:此类提供Docker的实用方法,例如检查当前环境是否在Docker容器内,检查某些Docker容器是否正在运行,检查Docker镜像是否存在,以及检查Docker网络是否存在。
贡献
如果您想为此项目做出贡献,请随意fork存储库,进行更改,并提交拉取请求。