kba-team/dockertools

脚本用于在您的 /etc/hosts 文件中添加和删除所有正在运行的 docker 容器。

安装数: 12,651

依赖项: 0

建议者: 0

安全: 0

星标: 1

关注者: 3

分支: 0

开放问题: 2

语言:Shell

类型:工具

v4.1.3 2024-07-17 11:56 UTC

This package is auto-updated.

Last update: 2024-09-17 12:18:20 UTC


README

docker-compose 是一个非常实用的工具,尤其是在您在 docker 容器网络中进行编程时。然而,访问这些 docker 容器的 (TCP) 服务并不那么容易。据我所知,目前还没有可用的工具可以将您正在运行的网络的 IP 和主机名添加到您的 hosts /etc/hosts 文件中——直到现在。

为什么不使用 <在此处插入 DNS/发现服务>?

运行 docker 容器的 DNS 服务总是会干扰您的工作站的 DNS 设置。特别是如果这些 DNS/发现服务本身运行在活跃开发工作站中的 docker 容器内。解决 DNS 问题并不容易。相反,/etc/hosts 文件很简单。它对您的工作站是否在实时切换域名、DNS 服务、VPN 等.毫不在意。如果出现错误,您始终可以手动编辑文件。 它是为了添加 docker 网络的主机而制作的(玩笑)。我喜欢 /etc/hosts 文件(不是玩笑)。

添加到您的 PHP 项目

composer require kba-team/dockertools --dev

添加条目到 hosts

在桥接 docker 网络中,在 /etc/hosts 文件中添加和删除由 docker-compose 创建的容器的 IP 地址和主机名。这将避免端口转发、名称解析等麻烦。

脚本首先删除 docker-compose 创建的所有容器主机名的所有现有条目,然后再次添加它们。这确保了 /etc/hosts 文件中没有重复条目。

假设这个脚本只能在 docker 容器正在运行时调用。

用法: docker_hosts.sh [-h] [-f <hosts-file>] [-r]

  • -h 显示用法信息。
  • -f <hosts-file> 使用不同于 /etc/hosts 的 hosts 文件。
  • -r 只删除由 docker-compose 创建的所有容器主机名,但不添加它们。

示例

  • vendor/bin/docker_hosts.sh:删除并添加 /etc/hosts 文件中的所有 docker 容器。
  • vendor/bin/docker_hosts.sh -r:仅从 /etc/hosts 文件中删除所有 docker 容器。

环境变量

  • DOCKER_REGISTRY 替代使用 busybox:latest 来操作 hosts 文件,将使用 ${DOCKER_REGISTRY}/busybox。如果您在本地注册表中手动缓存 docker 镜像以实现更快访问,这很有用。

自动化 docker-compose

为了自动化需要在 docker-compose 完成其工作后执行的命令,请使用 bin/docker.sh

用法: vendor/bin/docker.sh <command>

可用命令

  • add-hosts 将容器主机名和 IP 添加到 hosts 文件。
  • remove-hosts 从 hosts 文件中删除容器主机名和 IP。
  • exec 在 docker 容器中以 ${DEFAULT_EXEC_USER:-www-data:www-data} 执行命令(s)。可用选项
    • -u | --user 使用用户 ID $(id -u) 和组 ID $(id -g) 运行命令。
    • -c | --container <name> 在指定的容器中运行命令。默认容器: ${DEFAULT_CONTAINER:-web}
  • migrate 在默认容器 ${DEFAULT_CONTAINER:-web} 中运行迁移命令 ${MIGRATE_COMMAND}
  • seed 在默认容器 ${DEFAULT_CONTAINER:-web} 中运行种子命令 ${MIGRATE_COMMAND}
  • start 尝试拉取当前版本的镜像,启动容器,并将主机名和IP地址添加到hosts文件中。
  • up 运行start、migrate和seed命令。
  • stop 从hosts文件中移除容器的主机名和IP地址,并停止Docker容器而不销毁它们。
  • down 从hosts文件中移除容器的主机名和IP地址,并销毁Docker容器。
  • restart 运行down和up命令。
  • cleanup 删除由${DEFAULT_EXEC_USER}拥有的文件。可用选项
    • --root 删除由root拥有的文件。
  • behat 运行behat测试。任何额外的参数都将添加到behat命令中。
  • phpunit 运行phpunit测试。任何额外的参数都将添加到phpunit命令中。
  • help 显示帮助。

环境变量

在您的.env文件中配置环境变量。这样它也可以被docker-compose使用(DRY)。

  • DEFAULT_EXEC_USER 在Docker容器内执行命令的默认用户。
  • DEFAULT_CONTAINER 执行命令的默认容器。
  • MIGRATE_COMMAND 运行迁移以设置数据库结构的命令。如果此变量未定义,则不执行任何操作。
  • SEED_COMMAND 将种子数据添加到您的空数据库的命令。如果此变量未定义,则不执行任何操作。
  • PHPUNIT_BIN PHPunit二进制的路径。如果此变量未定义,则不执行任何操作。
  • BEHAT_BIN Behat二进制的路径。如果此变量未定义,则不执行任何操作。