terra/cli

地球命令行界面

安装: 89

依赖: 0

建议: 0

安全: 0

星星: 48

关注者: 12

分支: 17

开放问题: 55

类型:项目

dev-master 2017-08-15 16:14 UTC

README

Terra command line interface

关于

地球是一个工具集,旨在快速轻松地使用Docker搭建Web应用。

它设计得尽可能简单,便于开发者使用,同时足够强大,可以在大规模生产环境中使用。

有了地球,你只需要关心你网站的代码。停止浪费时间设置环境。让地球和docker为你做所有工作。

.terra.yml

你的.terra.yml文件为你提供了巨大的功能。

查看一个示例.terra.yml文件并将其放入你的应用程序源代码中。

社区

请加入Gitter的聊天。我们希望得到尽可能多的反馈!

Join the chat at https://gitter.im/terra-ops/terra-cli

文档 & 问题

Read the Docs或帮助改进文档

问题Story Boarding

起源

地球作为一项概念验证被创建。Symfony CLI已经通过像terminus这样的项目证明了自己的价值。

地球的创造者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团队,但也有一些关键区别。

  1. 天境旨在处理所有事情:本地开发、测试和生产。
  2. 天境是用PHP和Symfony编写的:Kalabox是用Node JS编写的。
  3. 天境是一个提议的平台,用于推动Aegir和Devshop的未来。我们希望从这些工具中招募一个大型的社区。
  4. 天境目前扩展了kalabox/drush容器,提供了一个可以SSH进入的容器。

我们希望尽可能与他们合作。