10个版本
0.1.22 | 2023年12月16日 |
---|---|
0.1.20 | 2023年12月16日 |
0.1.15 | 2023年8月25日 |
0.1.14 | 2023年6月27日 |
0.1.9 | 2023年3月2日 |
#65 in HTTP客户端
44 每月下载量
3MB
包含 (ELF可执行文件, 1.5MB) bin/httpget-tls.x86_64, (ELF可执行文件, 1.5MB) bin/httpget-tls, (ELF可执行文件, 535KB) bin/httpget, (ELF可执行文件, 1MB) bin/httpget-tls.aarch64, (ELF可执行文件, 535KB) bin/httpget.x86_64, (ELF可执行文件, 470KB) bin/httpget.aarch64
HttpGet
这是一个小巧的客户端,可以将您在命令行中指定的参数发送为HTTP GET请求。这是静态编译的,因此它非常适合用于需要HTTP客户端进行健康检查的distroless或scratch容器。
为什么要构建这个?
这个项目源于一个朋友的请求,他想在distroless容器中运行健康检查,而我则想创建一个尽可能小的二进制文件。我对此过程进行了记录,如果您想了解更多信息,请阅读这篇博客文章。
同时,使用distroless容器或基于scratch
的容器越来越成为一种趋势,这主要是出于安全和图像尺寸的原因;这个项目允许一个仅能执行GET请求的最小依赖客户端,对容器尺寸的影响微乎其微。
这个有多小?
让我们将二进制文件的大小与其他流行的二进制文件进行比较,特别是与wget
和curl
进行比较,这些二进制文件是在alpine
容器中测量二进制文件及其依赖项的
二进制文件 | 大小 |
---|---|
curl |
6.1mb |
wget |
1.4mb |
httpget ,无TLS |
531kb |
httpget ,带rustls |
1.2mb |
总的来说,它非常小巧。
安装HttpGet
目前,只发布了x86_64的二进制文件。如果您希望使用ARM架构的镜像,您需要自行构建它们。
Docker
由于这个二进制文件主要用于Docker健康检查,因此最简单的方式是通过Docker使用它。二进制文件发布在ghcr.io/cryptaliagy/httpget
存储库中的scratch容器中,您可以使用版本标签或latest
/latest-tls
。
任何发布版本标签都包含一个等效的 tls
标签。下面是一个示例 Dockerfile,或者查看 此项目 以了解示例用法。
FROM golang:latest as build
# Build steps here
# (...)
# In the end we get a binary at /app/bin/example with our web service
FROM ghcr.io/cryptaliagy/httpget:latest as httpget
FROM scratch as runner
COPY --from=build /app/bin/example /example
COPY --from=httpget /httpget /httpget
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD ["/httpget", "https://127.0.0.1:8080/healthz"]
CMD ["/example"]
另一种选择是将 httpget
镜像 放在 构建阶段之前,并将其复制到构建阶段的输出目录,这样您的最终镜像就只有一个层。
FROM ghcr.io/cryptaliagy/httpget:latest as httpget
FROM golang:latest as build
# Build steps here
# (...)
# In the end we get a binary at /app/bin/example with our web service
COPY --from=httpget /httpget /app/bin/httpget
FROM scratch as runner
COPY --from=build /app/bin /bin
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD ["/bin/httpget", "https://127.0.0.1:8080/healthz"]
CMD ["/bin/example"]
Github 发布(直接下载)
常规二进制文件和 TLS 二进制文件可通过 Github 发布获取,并可在 此处 下载。 httpget
二进制文件 只能 使用 http://
协议 URL,而 httpget-tls
可以使用 http://
或 https://
。
使用 Cargo 安装
该项目已发布在 crates.io 上,可以使用 cargo
通过以下命令安装: cargo install httpget
。这将 不会 生成静态链接的二进制文件:为了生成这种二进制文件,您必须确保已安装正确的 *-unknown-linux-musl
目标。
您还可以克隆此存储库并运行 cargo install --path .
通过 Cargo 安装。
依赖项
~0.2–8.5MB
~77K SLoC