kba-team / dockertools
脚本用于在您的 /etc/hosts 文件中添加和删除所有正在运行的 docker 容器。
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二进制的路径。如果此变量未定义,则不执行任何操作。