terra / cli
地球命令行界面
Requires
- php: >=5.5.9
- cpliakas/git-wrapper: ~1.4
- guzzlehttp/guzzle: ~6.0
- symfony/config: ~2.6
- symfony/console: ~2.6
- symfony/filesystem: ~2.6
- symfony/process: ~2.6
- symfony/yaml: ~2.6
- teqneers/php-stream-wrapper-for-git: ~1.0
- videlalvaro/php-amqplib: 2.2.*
This package is not auto-updated.
Last update: 2024-09-14 17:37:32 UTC
README
关于
地球是一个工具集,旨在快速轻松地使用Docker搭建Web应用。
它设计得尽可能简单,便于开发者使用,同时足够强大,可以在大规模生产环境中使用。
有了地球,你只需要关心你网站的代码。停止浪费时间设置环境。让地球和docker为你做所有工作。
.terra.yml
你的.terra.yml文件为你提供了巨大的功能。
查看一个示例.terra.yml文件并将其放入你的应用程序源代码中。
社区
请加入Gitter的聊天。我们希望得到尽可能多的反馈!
文档 & 问题
起源
地球作为一项概念验证被创建。Symfony CLI已经通过像terminus这样的项目证明了自己的价值。
- https://github.com/pantheon-systems/terminus
- https://github.com/platformsh/platformsh-cli
- https://github.com/ericduran/flo
- https://github.com/jonpugh/director
地球的创造者Jon Pugh也是OpenDevShop的创造者。他被Christopher Gervais聘为Aegir项目的维护者。
Jon想创建一个新的CLI,可以替代Provision项目,并作为Aegir和DevShop等产品的核心。
目标是不仅仅是简单的CLI,不仅仅是出色的本地开发工具,还要尝试解决更大的问题,如扩展、测试、部署和监控Web软件。
目的
使网站在其整个生命周期中尽可能容易地拥有,从本地主机到大规模生产,全部使用开源软件。
地球是用于处理、部署、测试和扩展Web软件项目的用户界面。
地球使您能够快速轻松地管理项目和环境。
按一个按钮即可获取测试基础设施。
"应用"
“应用”是您的网站。它是您项目的源代码。地球知道git URL以及(将)知道可用的分支和标签。地球将帮助您使用git从其上游存储库更新应用程序。
"环境"
环境是运行源代码所需的所有系统。
“EnvironmentFactory”类将是可插拔的。开箱即用,它提供了一个工作的docker集群,但我们可以扩展它以支持“多个apache vhost”模型或不同的容器提供者。
用户将能够使用地球控制由多个托管提供商托管的环境,包括本地主机,所有这些都可以通过同一个界面完成。
社区 & 协作是关键
我们希望使这个工具适用于每个人。我们希望从所有对解决这些问题的各方获取反馈,以便确定要做什么工作。
请加入我们GitHub上的问题队列和gitter的聊天室。
开箱即用可扩展
我们希望从可扩展性开始。Terra的目的是让扩展变成一键操作。
目前Terra使用Docker和Docker Compose来搭建和扩展网站。
这使得在托管服务器或本地计算机上快速运行环境变得容易。
规划
请参阅用户故事板:https://huboard.com/terra-ops/terra-cli/
我将尽可能以敏捷的方式指导规划。请在问题队列中尽可能多地点评。
需求
- docker
- docker-compose
命令
terra status
列出此系统上的所有应用。
terra app:add
将新应用添加到系统中。
目前仅支持Drupal站点。
terra app:remove
从系统中删除应用。
terra environment:add
为应用添加环境。
terra environment:remove
删除环境。
terra environment:enable
运行docker-compose up
以启动环境。
terra environment:disable
运行docker-compose stop
以禁用环境。
terra environment:rebuild
在您的应用的.terra.yml
文件中查找rebuild_source: @drushalias
。同步数据库,复制文件,然后运行重建钩子。
terra environment:status
提供有关环境的状态信息,包括路径和URL。
terra environment:scale
设置“应用”容器的数量。此命令是docker compose app=5
的包装器。
Vagrant
在存储库中有一个Vagrantfile,可以用来启动安装了Terra的Linux服务器。
使用Vagrant插件“vagrant-hostsupdater”自动设置VM的/etc/hosts文件
$ vagrant plugin install vagrant-hostsupdater
调整堆栈
从一开始我们就知道我们必须让用户调整堆栈。
我们还希望它能够直接使用,因此我们创建了“默认”的docker-compose堆栈,您可以在以下链接中查看:https://raw.githubusercontent.com/terra-ops/terra-cli/master/docs/docker-compose-example.yml
现在允许您的应用源代码直接更改docker-compose.yml
堆栈
# Specific settings for docker compose go here docker_compose: # Overrides will replace any item in the entire docker-compose array. overrides: app: image: wordpress links: - storage environment: WORDPRESS_DB_HOST: database WORDPRESS_DB_USER: drupal WORDPRESS_DB_NAME: drupal WORDPRESS_DB_PASSWORD: drupal storage: image: mongo
此片段,如果放入您的应用的.terra.yml
文件中,将用WordPress容器替换Drupal容器,并添加和链接MongoDB容器。
在“docker_compose: overrides:”下的一切都将与标准堆栈合并,您可以在以下链接中查看:https://raw.githubusercontent.com/terra-ops/terra-cli/master/docs/docker-compose-example.yml
示例应用
Drupal 7 核心版
https://github.com/terra-ops/example-drupal
Drupal 7 Makefile
https://github.com/terra-ops/example-drush-make
Drupal 8
https://github.com/terra-ops/example-drupal8
WordPress
用wordpress
替换terra/drupal
docker镜像
https://github.com/terra-ops/example-wordpress
扩展器
简单打印IP地址以测试扩展。
https://github.com/terra-ops/example-scale
Symfony Terra API是一个symfony应用。将其用作示例。https://github.com/terra-ops/terra-api
编码标准
作为symfony应用,我们遵循PSR-2编码标准。
使用4个空格进行缩进,并遵循http://www.php-fig.org/psr/psr-2/中指定的所有其他规则
示例项目:18F敏捷BPA原型
NuCivic提交了18F敏捷BPA的工作原型。
我们使用Terra作为在另一台服务器上重新创建站点的推荐方法。
请参阅设置说明,在另一台服务器上使用Terra设置http://openfda.nucivic.build
Terra应用
使用Terra运行的应用程序在每个应用的根目录下都应该有一个.terra.yml
文件。
要查看示例文件,请参阅https://github.com/terra-ops/terra-cli/blob/master/docs/.terra.yml
天境API
“天境API”项目作为天境的基于Web的界面。它建立在Drupal 8之上。
有关更多信息,请参阅terra-api GitHub仓库。
历史
天境的部分研发是在一个名为“director”的项目中进行的:https://github.com/jonpugh/director-drupal
现在director已经弃用。
与Kalabox的比较
此项目与Kalabox有惊人的相似之处。
我们喜爱Kalabox和Kalamuna团队,但也有一些关键区别。
- 天境旨在处理所有事情:本地开发、测试和生产。
- 天境是用PHP和Symfony编写的:Kalabox是用Node JS编写的。
- 天境是一个提议的平台,用于推动Aegir和Devshop的未来。我们希望从这些工具中招募一个大型的社区。
- 天境目前扩展了kalabox/drush容器,提供了一个可以SSH进入的容器。
我们希望尽可能与他们合作。