tiknil/skipper

用于管理多个本地Web应用实例的CLI应用程序

0.2.3 2024-08-22 06:25 UTC

This package is auto-updated.

Last update: 2024-09-22 06:45:46 UTC


README

Skipper 是一个用于管理多个本地 Laravel docker-compose 部署的工具。

在构建 Laravel 应用程序时,它强烈倾向于使用 Tiknil 使用的模式。

安装

composer global require tiknil/skipper

确保 composer 二进制文件目录在您的 $PATH

您可以通过运行以下命令将 Skipper 更新到最新版本:

composer global update tiknil/skipper

用法

将当前路径注册为 Skipper 项目

# No options, sane defaults will be used and you will be asked to confirm the main fields
skipper init 

# All fields can also be set via command line options
skipper init --host=[host] --name=[name] \
        --compose-file=docker/docker-compose.yml \
        --env-file=docker/.env \
        --http-container=nginx
        --php-container=php-fpm

您将被提示自动安装默认的 laravel docker compose 文件。

请参阅 项目 了解每个字段的详细信息。

启动项目容器

skipper sail

停止项目容器

skipper dock

安装 caddy 根证书

skipper proxy:certs

一旦项目运行,Skipper 提供了一些有用的命令,可以直接与之交互。

skipper bash                  # Start a new bash shell inside the PHP container
skipper composer [command...] # Run a composer command (use instead of composer [command]
skipper artisan [command...]  # Run an artisan command (use instead of php artisan [command]
skipper tinker                # Start a new Laravel Tinker shell
skipper backup                # Create a new MySQL backup
skipper restore --file [file] # Restore a MySQL backup

运行不带参数的 skipper 以获取可用的完整命令列表

架构

Skipper 运行一个 Caddy 容器,作为反向代理并将请求转发到相应的项目实例。Caddy 还能生成本地域的 HTTPS 证书,使本地环境非常类似于生产部署。

Skipper 在 ~/.skipper 目录中安装其文件。

Mailpit

默认情况下,Skipper 还运行一个 Mailpit 容器。您可以在 localhost:8025 上看到 Web 仪表板。

Laravel 应该使用主机 host.docker.internal 和端口 1025,驱动 SMTP

MAIL_MAILER=smtp
MAIL_HOST=host.docker.internal
MAIL_PORT=1025

这避免了为每个项目运行一个单独的 mailpit/mailhog 实例。

Docker compose 命令

您可能需要为项目运行自定义的 docker compose 命令,例如 ps 来查看正在运行的容器。

您可以使用 compose 命令

skipper compose [command]

基本上,将每个 docker-compose [command] 替换为 skipper compose [command]。这是 必需的,因为 Skipper 将一些选项附加到 docker-compose 命令中,这些选项是必需的,例如名称或环境文件路径。

项目

为了使反向代理工作,Skipper 需要知道有关项目的信息并更新 Caddy 配置文件。可以使用 init 命令注册一个新的项目。

所有可用的项目都注册在 ~/.skipper/config.yaml 配置文件中。

  • name: 项目名称用作与项目相关的每个容器的 docker compose 前缀,包括与项目相关的数据卷和网络。因此,它必须是唯一的,更新可能会导致数据丢失(将使用新的 docker 数据卷)。
  • host: 要在反向代理中注册的域名
  • path: 项目根的路径
  • composeFile: docker-compose 文件的相对路径。
  • envFile: docker-compose 文件的 .env 文件的相对路径
  • httpContainer: http 容器的名称,Caddy 应将请求转发到其中
  • phpContainer: php 容器的名称,在其中运行实用命令。

开发

跳过器充分利用了Symfony的控制台进程组件。

如果您正在开发跳过器并需要测试您的编辑,您有两个选择

  • 直接运行bin/skipper二进制文件(例如bin/skipper list
  • 使用对本地项目的引用更新您的全局composer.json文件
"repositories": [
    {
        "type": "path",
        "url": "path/to/your/local/project"
    }
],

现在运行composer global require tiknil/skipper,将使用本地版本而不是发布版本。

故障排除

新项目上的无效SSL证书

如果在启动新项目后出现ssl错误,您可能需要将Caddy根证书安装到您的系统中。

skipper proxy:certs

请注意,浏览器可能会缓存ssl错误,您可能需要在安装证书后等待一段时间,以便浏览器停止显示警告

运行中的项目上的无效SSL证书(INVALID_DATE)

如果在项目运行一段时间后开始出现ssl错误,这可能是由于您的PC日期时间和容器内部时钟之间的时间偏差引起的。您可以重新加载caddy容器以解决此问题

skipper proxy:reload

未找到命令:skipper

如果您的shell在通过composer全局安装后找不到跳过器命令,您可能没有将composer的bin目录添加到$PATH中。

将以下行添加到您的~/.zshrc

export PATH=$PATH:$HOME/.composer/vendor/bin

然后重新加载文件

source ~/.zshrc

如果您不使用zsh作为您的shell,请参阅您首选的shell配置文件,而不是~/.zshrc