返回首页
最新
我一直想要这样的功能:一个简单的方法来“通过名称解析 Docker 容器”——例如,访问在我的开发机器上运行的 Docker 容器中的 Web 服务器。当然,我可以从所有这些容器中导出端口,尽量避免它们在主机上互相干扰,然后使用 http://localhost:PORT。但为什么要经历这些麻烦呢?这些容器已经在它们各自的 IP(例如,172.24.0.5:8123)上暴露了各自的端口,所以我只需要一个方便的方法来找到它们。
mdns-docker 允许你执行,例如,“ping my-container.docker.local”,它会找到一个运行中的容器的 IP,该容器的名称与主机模糊匹配。它的工作原理是运行一个本地的 mDNS 服务,监听 `*.docker.local` 请求,找到一个名称包含请求(这里是“my-container”)的运行中容器,获取该容器的本地 IP 地址,并用该 IP 地址响应 mDNS 查询。
示例:启动一个 ClickHouse 服务(作为示例)`docker run --rm --name myclicky clickhouse:25.7`,然后打开 `<a href="http://myclick.docker.local:8123" rel="nofollow">http://myclick.docker.local:8123</a>` 来访问内置仪表板——无需端口映射!
如果你还没有玩过 mDNS,你就错过了很多乐趣。它易于使用,能够让你的生活变得更加轻松的可能性是无穷无尽的。它也是 Spotify 和 Chromecast 用于本地设备发现的技术。
大约三年前,我编写了一个自定义预处理器,以帮助处理SQLite项目的JavaScript构建(例如,过滤原生JS与ESM模块之间的小差异)。最近,这个应用程序被分叉,重构成一个库,现在据我所知,它是世界上唯一一个源无关、可扩展的客户端预处理器(如果不算sed、awk等工具的话)。
它是用可移植的C99实现的,源代码分发包含两个文件(一个头文件,一个.c文件)。它唯一的第三方代码依赖是SQLite。
如果你有类似C语言的预处理需求,但并不使用C语言,c-pp可能会引起你的兴趣。