adimeo-lab/deckle

容器化项目的自动化工具

安装: 6

依赖项: 0

建议者: 0

安全: 0

星标: 1

关注者: 1

分支: 0

开放性问题: 5

类型:application

v1.3.0-alpha6 2020-01-24 15:35 UTC

README

概念

由于 Docker 只在 Linux 上(正确)运行,而许多人使用 Mac,我们选择在 Ubuntu 虚拟机中运行我们的参考环境。

管理此类环境可能会很复杂,甚至对初学者来说可能会令人困惑。Deckle 的目的是通过自动化许多任务来简化这种管理,这些任务不仅与环境的部署有关,而且与日常使用也有关。

由于其环境丰富,我们还确保在 Linux 上 Deckle 也成为我们的参考开发环境。

组件

为了优化运行,Deckle 生态系统需要以下组件(尤其是)

配置

安装依赖项

Deckle 的安装程序将安装 Deckle 正常运行所需的多数命令行工具。这些工具要么是 macOS 的本地工具,要么可以使用 brew 安装。

Virtual Box

官方网站下载安装程序。

Vagrant

  • macOs
  • 官方网站下载安装程序
  • GNU/Linux (Ubuntu/Debian)
  • Deckle 安装程序会为您安装

Mutagen

为了确保最佳性能,我们不使用主机和容器之间的卷挂载,而使用一个超高性能的同步工具,该工具在容器中安装一个守护进程,并始终在主机和容器之间保持双向同步,主机优先。

这个工具叫做 mutagen,在 macOS 上使用 brew 安装。

注意:如果您尝试在除 macOS 之外的平台(尤其是 Linux)上使用 Deckle,您需要从项目 GitHub 页面下载软件包。

安装 Deckle

首先,访问 deckle.adimeo.eu 下载 Deckle 的最新版本。

然后,为了安装 Deckle 运行所需的环境,执行

deckle install

如果一切顺利,您应该可以访问 Deckle 虚拟机 并在 Portainer 中查看正在运行的容器(默认标识:admin/portainer)。

微调

SSH 认证

最舒适的 SSH 连接方式是使用 SSH 密钥和客户端配置。

因此,前提是您有与您的用户账户关联的 RSA 密钥对。理想情况下,该密钥还应该与您的 GitHub 账户关联。

第一步是将您的公钥复制到虚拟机

deckle vm:ssh:copy-id

然后,您需要指示 SSH 将私钥传播到远程会话中(这样就不需要物理复制到虚拟机中),通过编辑您的 SSH 配置文件

vi ~/.ssh/config

并添加以下部分

Host deckle-vm
        Hostname deckle-vm
        User deckle
        AddKeysToAgent yes
        ServerAliveInterval 60
        ForwardAgent Yes
        IdentitiesOnly yes
        UseKeychain yes # macOs uniquement

使用 Deckle 工作

新项目

要在Deckle虚拟机中部署新项目,只需将您定位到项目的根目录并执行

deckle bootstrap <projectid> <provider/template>

其中

  • 是您的项目标识符。注意,它必须是唯一的,且不包含任何特殊字符(仅字母)
  • <provider/template>是要使用的Deckle配置模板的名称。可以通过执行
deckle templates:list

或在官方存储库中咨询来获取模板列表。

一旦项目初始化完成,可能需要通过遍历新创建的./deckle目录中的文件来调整模板以适应当前项目。每个模板都提供了一个README文件,解释其基本工作原理以及需要调整或不需要调整的内容。

环境初始化

要部署已初始化(即已在./deckle目录中具有操作配置)的项目,只需执行

cd project/diretory
deckle up

如果项目的Deckle配置已更新,可能需要重新部署某些本地文件,方法是重新执行

cd project/diretory
deckl init

在镜像中同步源文件

每个项目都必须提供一个deckle/mutagen.yml文件才能与Deckle正确工作。要开始同步,请执行

cd project/directory
deckle mutagen:sync start

注意:命令deckle mutagen:sync <operation>可以简写为deckle sync <operation>

要检查同步的持续正常运行

deckle mutagen:monitor

或监视首次同步

deckle mutagen:monitor -u

在这种情况下,监控器将在所有会话同步完成后自动停止。

安装依赖项

要使用composer安装项目的依赖项,请执行

deckle composer install

注意:如果您想向composer传递参数,则需要使用--序列来执行,这样Deckle就不会将其视为对它的配置。例如:

deckle composer install -- --no-interaction

在容器中打开shell

要快速通过shell访问环境镜像,请执行

deckle sh

这将在配置中的app.container部分指定的容器中自动打开一个shell会话。如果您想访问虚拟机中的另一个容器,请使用

deckle sh <container-name> 
# par exemple
deckle sh mysql57

在Deckle机器中打开shell

要使用ssh访问Deckle机器,请使用以下命令

deckle vm:ssh

此命令将以deckle用户打开一个ssh shell。一旦在远程shell中,要切换到root用户,请执行sudo -s一次。如果需要,deckle用户的默认密码是... deckle

帮助和其他命令

要获取有关这些命令的更多信息或发现其他可用命令,请参阅内嵌帮助

# afficher toutes les commandes disponibles 
deckle list

# afficher le détail de l'utilisation d'une commande
deckle help <command>
# exemple
deckle help vm:ssh

其他服务

Deckle机器集成了许多服务,其中大多数提供Web访问和/或监控界面。主要服务在本章中列出。要查看所有安装的应用程序列表,请执行

deckle apps list

要了解它们是否公开了Web界面(以及它们的状态),请使用

deckle apps status

如果一个应用公开了80端口,按照惯例,该Web界面可通过URL http://<app-name>.deckle.local 访问。

Portainer

http://portainer.deckle.local admin/portainer

Traefik

Traefik是一个反向代理,它允许通过*.deckle.local地址访问不同的容器。您可以通过以下地址访问其UI以查看在Deckle环境中配置的HTTP或TCP路由器列表

http://traefik.deckle.local

MySQL 5.7

一个配置为访问MySQL 5.7服务器的phpMyAdmin实例可用,地址如下

http://pma57.deckle.local

然而,也可以(并且更推荐)使用以下连接信息配置一个更传统的客户端(如MySQL Workbench)。

  • 主机:mysql57.deckle.local(注意,从其他容器中,仅需要使用mysql57
  • 用户:root
  • 密码:root

Maildev

Maildev是一个本地邮件服务器,可以拦截应用程序发出的所有邮件,并在以下网页邮箱中查看:

http://maildev.deckle.local

为了使应用程序在开发过程中使用此服务,只需将它们配置为使用SMTP服务器maildev

XHGui

此应用程序允许查看由XHProf生成的性能分析跟踪。对于使用官方Deckle模板(提供者"adimeo")的项目,只需在项目的任何URL中添加?xhprofile&xhprofile即可。此参数也可以通过POST传递。

其存在将触发性能分析信息的收集,您可以在以下位置找到这些信息:

http://xhgui.deckle.local

扩展Deckle

本地命令

如果您想为项目编写特定命令,您可以在./deckle/commands中创建一个类。

包含类的文件必须命名为*Command.php,并扩展AdimeoLab\Deckle\AbstractDeckleCommand

| 注意:为了开发您的命令,您需要在您的./deckle目录中安装Deckle的源代码,| 但这些源代码在执行时不会被使用。取而代之的是,将被嵌入到二进制文件中的源代码 | deckle(.phar)使用。目前还没有用于本地命令的版本控制系统。

支持

已知问题

某些涉及从VM进行SSH连接的命令失败,并显示消息'Host key verification failed'。

'

Host key verification failed.通常意味着远程机器不为VM所知(即其身份不在~/.ssh/known_hosts文件的列表中)。

为了解决这个问题,需要从VM本身首先连接到相关的机器。

在macOs上无法解析*.deckle.local的主机名

如果出现此问题,请尝试按照以下方式重新启动macOs的DNS子系统:

dscacheutil -flushcache
sudo killall -HUP mDNSResponder

如果遇到DNSmasq实施问题,请参阅此博客

所有http://*.deckle.local的URL都显示一个简单的消息404 not found

这是由于Traefik配置问题造成的。为了查看Traefik的状态,请尝试通过以下地址访问其UI:

http://traefik.deckle.local:8080

其他问题

如果在安装或使用Deckle过程中遇到问题,请联系Gauthier或在其GitHub存储库中创建问题。