adimeo-lab / deckle
容器化项目的自动化工具
Requires
- php: ^7.3
- ext-curl: *
- ext-json: *
- ext-posix: *
- docker-php/docker-php: ^2.0
- objective-php/events-handler: ^3.1
- objective-php/services-factory: ^3.1
- padraic/phar-updater: ^1.0
- symfony/console: ^4.3
- symfony/filesystem: ^4.3
- symfony/finder: ^4.3
- symfony/yaml: ^4.3
Requires (Dev)
- codeception/codeception: ^3.1
- phpro/grumphp: ^0.17.2
- squizlabs/php_codesniffer: ^3.5
- symfony/var-dumper: ^4.3
This package is auto-updated.
Last update: 2024-09-25 01:54:38 UTC
README
概念
由于 Docker 只在 Linux 上(正确)运行,而许多人使用 Mac,我们选择在 Ubuntu 虚拟机中运行我们的参考环境。
管理此类环境可能会很复杂,甚至对初学者来说可能会令人困惑。Deckle 的目的是通过自动化许多任务来简化这种管理,这些任务不仅与环境的部署有关,而且与日常使用也有关。
由于其环境丰富,我们还确保在 Linux 上 Deckle 也成为我们的参考开发环境。
组件
为了优化运行,Deckle 生态系统需要以下组件(尤其是)
-
macOs
-
Linux (Ubuntu/Debian)
配置
安装依赖项
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路由器列表
MySQL 5.7
一个配置为访问MySQL 5.7服务器的phpMyAdmin实例可用,地址如下
然而,也可以(并且更推荐)使用以下连接信息配置一个更传统的客户端(如MySQL Workbench)。
- 主机:
mysql57.deckle.local
(注意,从其他容器中,仅需要使用mysql57
) - 用户:root
- 密码:root
Maildev
Maildev是一个本地邮件服务器,可以拦截应用程序发出的所有邮件,并在以下网页邮箱中查看:
为了使应用程序在开发过程中使用此服务,只需将它们配置为使用SMTP服务器maildev
。
XHGui
此应用程序允许查看由XHProf生成的性能分析跟踪。对于使用官方Deckle模板(提供者"adimeo")的项目,只需在项目的任何URL中添加?xhprofile
或&xhprofile
即可。此参数也可以通过POST传递。
其存在将触发性能分析信息的收集,您可以在以下位置找到这些信息:
扩展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