percymamedy / dcompose
Requires
- php: ^7.2
- ext-zip: *
- guzzlehttp/guzzle: ~6.0
- laminas/laminas-text: ^2.7
- laravel-zero/framework: ^7.0
- symfony/finder: ^5.0
- symfony/yaml: ^5.0
Requires (Dev)
- kint-php/kint: ^3.3
- mockery/mockery: ^1.3.1
- phpunit/phpunit: ^8.5
This package is auto-updated.
Last update: 2022-07-22 07:16:27 UTC
README
介绍
Laradock是一个强大的工具,它帮助构建用于运行Laravel或PHP应用的Docker环境。
然而,确定并仅使用您应用程序所需的具体组件可能会相当痛苦。大多数时候,您可能只会使用少数几个镜像,并记住每个项目应该使用哪个镜像(以便可以运行docker-compose up -d ..)是非常痛苦的。
我创建了Dcompose,因为我总是发现自己需要从laradock复制所需的镜像Dockerfile到我的项目中,并为每个项目重新创建docker-compose.yml文件。受到Composer的启发,我开始了创建自己工具的旅程,这个工具可以在我的项目中“需要”我需要的组件,并自动更新我的docker-compose.yml文件。
这就是Dcompose的诞生。我不知道这个库最终会走到哪里,但我的希望是,那些与我遇到相同问题的人可能会发现它很有用。
许可
Dcompose是开源软件,采用MIT许可
安装
首先确保您的系统上已安装Docker和Docker Compose。请查看Docker和Docker Compose安装文档。
然后,使用Composer下载Dcompose
$ composer global require percymamedy/dcompose
请确保将Composer的全局vendor bin目录放置在您的$PATH中,以便系统可以定位Dcompose可执行文件。根据您的操作系统,此目录位于不同的位置;然而,一些常见位置包括
- macOS: $HOME/.composer/vendor/bin
- GNU / Linux发行版: $HOME/.config/composer/vendor/bin
使用
初始化命令
使用init命令,您可以开始定义要在项目中使用哪些服务。您应该在项目根目录中运行此命令,如下所示
$ dcompose init
这是一个交互式命令,将询问您的项目名称和您将使用的服务。服务只是存在的Laradock服务,查看laradock的github仓库以了解您可以要求的所有服务。
运行此命令后,将在项目根目录中创建一个新的.docker/
文件夹,其中包含仅包含服务和正确的docker-compose.yml
文件布局。
您还会在.docker文件夹中找到一个.env
文件。您可以修改此文件以更改特定于您环境的值。
现在,您可以在.docker/
文件夹内运行以下命令来运行您的项目
$ docker-compose up -d
要求命令
如果您错过了某个服务或需要从laradock获取其他服务,可以运行以下要求的命令:
$ dcompose require <service_name>
其中 <service_name>
是laradock服务之一的名字。这将把该服务添加到您的 .docker/
文件夹和 docker-compose.yml
文件中。
现在您可以在 .docker/
文件夹中运行以下命令:
$ docker-compose up -d
或者
$ ./containers start
如果您已经运行了 generate-tools
命令。
删除命令
您可以使用以下命令来删除服务:
$ dcompose remove <service_name>
这不会从 .docker/
文件夹中删除服务文件夹,也不会从 docker-compose.yml
文件中删除正确的部分。
然而,为该服务创建的容器、镜像和卷仍然存在于您的系统上。要完全删除它们,您应该运行以下docker命令:
$ docker rm <container_name>
$ docker rmi <image_name>
$ docker volume rm <volume_name>
生成工具命令
生成命令行工具有助于从laradock运行和执行docker容器。
$ dcompose generate-tools
将创建一个新的 containers
脚本,它为您提供三个选项:
启动docker容器
$ ./containers start
停止docker容器
$ ./containers stop
在启动容器后通过ssh进入工作空间容器
$ ./containers workspace
刷新命令
laradock文件以这种方式被获取和缓存,以便在不需要每次都从dist重新获取文件的情况下,更快地执行require
、remove
和init
命令。
然而,无法知道laradock何时被更新,因此refresh
命令允许我们刷新缓存的laradock文件。
$ dcompose refresh
路线图v0.2
- 通过面向对象的方法使代码更加一致。
- 使用类似doctrine cache的东西来管理laradock文件,从而通过过期来消除刷新命令的需要。
路线图v0.3
- 添加一个包含所有docker容器的JSON或YML格式的manifest文件,从而消除提交.docker文件夹的需要。
鸣谢
非常感谢所有辛勤工作以创造令人惊叹产品的开发者们!
创建者
Twitter: @PercyMamedy
GitHub: percymamedy