richdynamix / arc
为您的Laravel项目提供现成的基于Docker的开发环境。
Requires
- php: ^7.2|^8.0
- illuminate/console: 6.*|7.*|8.*
- illuminate/support: 6.*|7.*|8.*
README
使用高度可配置、现成的Docker环境启动您的新Laravel项目。使用Travis CI自动构建、测试和部署到Kubernetes
概述
Arc是一个简单的Laravel包,为大多数应用程序添加终极Docker环境。基于惊人的ContinuousPipe Dockerfile,此包将添加正确的Dockerfile、Docker Compose和配置到您的Laravel项目中。
此外 - 如果选择,还可以添加与Travis CI和Kubernetes一起工作的持续集成和持续部署配置。
Docker配置提供以下功能
- PHP 7.4(可配置为5.6、7.0、7.1、7.2、7.3、7.4)
- NodeJS 11及NPM
- NGINX
- MySQL 8
- REDIS 6
- ConfD模板化
- SupervisorD进程管理
- 可配置队列工作者
- 自动启动Laravel Horizon进程
- 自动启动CRON
- 轻松创建仅CRON容器。对于将Kubernetes集群部署到零停机时间非常有用
- 使用环境变量配置整个基础设施。
CI/CD配置包含以下内容
- Travis CI YAML配置
- 构建并将您的Docker镜像推送到Docker Hub
- 自动化的BASH文件和Dockerfile代码检查
- 自动化的PHP CodeSniffer、PHPMD和PHPStan静态代码分析
- 自动化的PHP Unit测试
- 使用Kubectl工具配置Kubernetes集群上下文
- 使用Helm和Helm Charts配置和部署您的应用程序到Kubernetes
要求
此包适用于新的Laravel 6项目。
安装
在项目中需要此包
composer require richdynamix/arc
运行安装程序
php artisan arc:install
您将被提示选择是否需要CI/CD配置。
Would you like a Travis CI and K8s CD configuration? (yes/no) [no]:
安装程序完成后,将Arc作为Composer依赖项删除。
请注意:如果您选择使用CI/CD配置,则需要在运行容器之前添加一些本地环境变量
export DOCKER_USERNAME=myUsername export DOCKER_REPO=my-repo export TAG=latest export GITHUB_TOKEN=1234567890 # optional
运行容器
docker-compose up
持续集成和部署
需要添加到您的Travis CI仓库设置中的环境变量 -
静态代码分析
- PHP CodeSniffer已配置为使用项目根目录中的
phpcs.xml
文件。这将仅在app
文件夹中遵循PSR2编码风格。 - PHPMD已配置为使用项目根目录中的
ruleset.xml
文件,该文件遵循最佳实践。 - PHPStan 已配置在最低级别
0
。如果您想提高此级别,可以修改tools/docker/usr/local/share/container/plan.sh
文件中的do_phpstan
函数
您可以使用您的 phpcs.xml 和 ruleset.xml 文件来配置您的 IDE,例如 PHPStorm,以便在开发过程中自动检查您的代码
在容器内部,您可以使用以下命令随时运行您自己的静态代码分析工具
container phpcs
container phpmd
container phpstan
此外,您还可以运行 container phpunit
在容器内运行您的测试套件。
连接到 Web 容器
作为 Arc 配置的一部分,一个简单的 bash 脚本被添加到您的项目根目录,允许您调用 -
./ssh web
这仅仅是一个方便的包装脚本。在底层,它只是调用 docker exec -it web bash
此外,您可以将 web
参数替换为任何容器名称,例如 ./ssh database
,./ssh redis
配置
Arc 仅仅是一种将正确的 Docker 配置自动复制到您的 Laravel 项目中的方法。虽然您可能已经遇到过几个基于 Laravel 的 Docker 环境,但它们都没有覆盖 ContinuousPipe Dockerfile 提供的生产就绪设置。
ContinuousPipe Dockerfile 提供了一个非常灵活和坚实的基础设施设置,使用 ConfD 作为模板和 SupervisorD 控制服务启动的简单系统。在构建时,tools/docker/etc
和 tools/docker/usr
的内容被复制到容器中,这意味着我们可以影响任何环境变量和配置。
而不是解释 Arc 可用的所有功能和环境变量,更容易向您指出父镜像的文档
- PHP NGINX - Arc Docker 文件的直接父级。默认情况下,它使用 PHP 7.4,但您可以在 Arc Dockerfile 中更改此设置以符合您的需求。(可用版本为 5.6、7.0、7.1、7.2、7.3、7.4)
- Ubuntu 16.04 - 这是 PHP 图像扩展的基镜像。这设置了所有的 ConfD 和 SupervisorD 配置。
要操作您的环境,您可以添加任何上述环境变量的值。此外,还有一些特定于 Arc 的,所有这些都在 tools/docker/usr/local/share/env/20-arc-env
中定义。
致谢
如果没有 ContinuousPipe 团队惊人的工作,这个包将不可能实现。还要特别感谢 Samuel 介绍 ContinuousPipe 和 Kubernetes。他教授 Docker 概念的能力非常有价值。非常感谢 Kieren 专注于细节和永不言倦的耐心,帮助我理解 ContinuousPipe Dockerfile 和设置。
许可证
MIT 许可证
特此授予任何人无代价获得本软件及其相关文档文件(“软件”)的副本(以下简称“软件”)的权利,在不受限制的情况下处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向提供软件的人做上述事情,但须遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
本软件按“原样”提供,不提供任何形式的保证,无论是明示还是暗示,包括但不限于适销性、适用于特定目的和非侵权的保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论源于合同、侵权或其他,与软件或其使用或其他方式有关。