kiwicom/loopbind

🛠️️ CLI 工具,用于轻松地将本地网络接口与附加 IP 绑定,并确保在 /etc/hosts 中的匹配记录。

v1.3 2023-08-11 13:57 UTC

README

🛠️️ CLI 工具,用于轻松地将本地网络接口与附加 IP 绑定,并确保在 /etc/hosts 中的匹配记录。

这是一个辅助工具,通过 composer global 安装,用于那些已经准备就绪并绑定本地主机子网块 IP 的 Docker 组合(通过 docker-compose.yaml)的机器,允许多个此类组合并行运行(通过 IP 区分)。

实际上,这个工具确保本地网络接口(在 OS X 上为 lo0)也将有另一个来自本地主机子网块的 IP(例如 127.0.0.2),并且 /etc/hosts 中将有特定的域名路由到该 IP(例如 127.0.0.2 example.test)。

支持的平台

所需的基本工具

  • sudo
  • ifconfig
  • sed

安装

运行

composer global require kiwicom/loopbind

然后,如果您在 PATH 上有 composer 的 bin 目录,您可以通过在 CLI 中调用 loopbind 来使用它。因此,您可以使用 CLI 向导初始化配置。

$ loopbind init
> ENV variable name to extract IP address from (leave empty if you want to provide manually or want random one):
> 
> Do you want to generate random free local IP:
>
>  [0] yes
>  [1] no
> > no
> IPv4 address from local block:
> 127.0.0.1
> Hostname (leave empty to continue):
> hostname
> Hostname (leave empty to continue):
> 
> New config file `.loopbind.json` was created.
> Do you want to create .env file with variable IP:
>
>  [0] yes
>  [1] no
> > yes
> File `.env` was created with variable `IP` set to `127.0.0.2`.
> You appear to have .docker-compose.yml file in your directory. Run `docker compose stop`, replace port binding from `"80:80"` to `"$IP:80:80"` and then `docker copmose up`.

用法

在项目根目录下定义一个名为 .loopbind.json 的文件,内容如下:

{
    "localIPAlias": "127.11.23.1",
    "hostname": "foobar.test"
}

或者当您需要绑定多个主机名时

{
    "localIPAlias": "127.11.23.1",
    "hostname": ["www.foobar.test","foobar.test"]
}

然后在此目录下运行 loopbind apply 以运行确保绑定的命令。您还可以运行 loopbind unapply 来删除绑定,并运行 loopbind show 来显示配置及其状态。

这些命令是幂等的,因此重复的 apply/unapply 不会做任何事情(apply 命令甚至不需要再次运行命令)。

请注意,配置预期位于当前工作目录中。

开发

该项目使用以下编码标准

  • PHPCS
  • PHPStan 分析(composer stan
  • PHPUnit 测试。(composer unit

然而,由于预期的副作用(运行后更改计算机配置)和 KISS 原则的应用,只有功能子集被自动测试。因此,

  • ApplyCommand
  • UnapplyCommand

应手动进行测试。