#http-request #http #client #minimal

app httpget

一个小巧简单的客户端,用于发送HTTP GET请求,如果成功则返回0状态码,否则返回1状态码

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 每月下载量

MIT 协议

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

release test

这是一个小巧的客户端,可以将您在命令行中指定的参数发送为HTTP GET请求。这是静态编译的,因此它非常适合用于需要HTTP客户端进行健康检查的distroless或scratch容器。

为什么要构建这个?

这个项目源于一个朋友的请求,他想在distroless容器中运行健康检查,而我则想创建一个尽可能小的二进制文件。我对此过程进行了记录,如果您想了解更多信息,请阅读这篇博客文章

同时,使用distroless容器或基于scratch的容器越来越成为一种趋势,这主要是出于安全和图像尺寸的原因;这个项目允许一个仅能执行GET请求的最小依赖客户端,对容器尺寸的影响微乎其微。

这个有多小?

让我们将二进制文件的大小与其他流行的二进制文件进行比较,特别是与wgetcurl进行比较,这些二进制文件是在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