myip是一个GitHub上的开源项目,它的中文介绍是这样的:
可能是最好用的IP工具箱。轻松检查你的 IP,IP 地理位置,检查DNS泄漏,检查 WebRTC 连接,速度测试,ping 测试,MTR测试,检查网站可用性,查询 Whois 信息等等。
从这段描述可以看出,这个应用是一个功能相当全面的IP信息与网络诊断工具箱。其GitHub仓库地址为:https://github.com/jason5ng32/MyIP
myip的Web界面
下图是部署完成后访问到的Web主界面:

从页面上方的菜单栏可以看到,这个工具除了显示当前IP地址和地理位置信息外,还集成了多种网络测试功能。
例如,网络连通性测试可以快速检测到常用网站(如淘宝、百度、Google、GitHub等)的访问状态和延迟。

DNS泄露测试和网速测试(基于CloudFlare)也是其核心功能,对于使用代理或VPN的用户很有帮助。

此外,它还提供了一系列高级工具,如全球延迟Ping测试、MTR路由追踪、实时DNS解析、网站封锁查询等。

通过Dockerfile自行构建镜像
虽然项目作者提供了预构建的docker镜像,并给出了直接运行的命令:
docker run -d -p 18966:18966 --name myip --restart always jason5ng32/myip:latest
但在某些网络环境下,直接拉取可能遇到困难。因此,我们可以选择拉取项目源码,自行编写Dockerfile来构建镜像。这种方式也更有利于理解应用结构和进行定制化。
以下是用于构建镜像的Dockerfile内容:
FROM node:alpine
WORKDIR /home
RUN apk add git
RUN git clone https://github.com/jason5ng32/MyIP.git
WORKDIR /home/MyIP
RUN npm config set registry https://registry.npmmirror.com
RUN npm install && npm run build
EXPOSE 18966
CMD ["npm", "start"]
这个Dockerfile的编排思路很清晰:
- 选择基础镜像:使用了基于Alpine系统的
node:alpine镜像,相比完整的node:latest镜像(约1.11GB),它非常轻量(仅约153MB)。
- 安装依赖与克隆代码:在镜像中安装
git,然后克隆MyIP项目的源代码仓库。
- 配置与构建:将npm源切换为国内镜像(如npmmirror.com)以加速依赖安装,然后执行
npm install安装依赖并npm run build构建项目。
- 暴露端口与启动命令:声明容器运行时将使用的端口(18966),并设置容器启动时执行的命令为
npm start。
接下来,使用以下命令在Dockerfile所在目录构建我们自己的镜像(注意命令末尾的点.表示当前目录):
docker build -t myipcheck:v1.0 .
构建完成后,可以通过docker images命令查看生成的镜像。可以看到,由于增加了代码和依赖层,镜像大小增长到了681MB。

镜像构建成功后,使用以下命令即可启动一个容器:
docker run -d -p 18966:18966 --name myip --restart always myipcheck:v1.0
运行docker ps命令,可以确认名为myip的容器已成功启动,并将宿主机的18966端口(同时支持IPv4和IPv6)映射到了容器内。

访问应用
现在,在浏览器中访问 http://你的服务器IP:18966,就能看到文章开头展示的MyIP工具箱Web界面了,所有功能都可以正常使用。
至此,一个基于Docker容器化部署的、功能强大的自建IP查询与网络测试工具就部署完成了。你可以将它作为个人或团队内网的测速和网络诊断利器,随时掌握自己的网络状态。更多容器化实践和网络运维技巧,欢迎在云栈社区交流探讨。