news 2026/8/24 9:43:59

bin的Docker部署教程:3步构建体积超小的静态二进制镜像(含docker-compose实战)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
bin的Docker部署教程:3步构建体积超小的静态二进制镜像(含docker-compose实战)

bin的Docker部署教程:3步构建体积超小的静态二进制镜像(含docker-compose实战)

【免费下载链接】bin:wastebasket: a paste bin.项目地址: https://gitcode.com/gh_mirrors/bi/bin

bin 是一款用 Rust 编写的极简paste bin(文本粘贴分享服务),无需数据库、无需评论系统,却能在几分钟内通过 Docker 完成部署。本教程带你3 步构建体积超小的静态二进制镜像,并实战 docker-compose 一键启动,让你快速拥有专属的代码片段分享平台。

🧩 为什么选择 bin 做你的 paste bin?

bin 的核心理念是"真正的极简":

  • 零依赖:不依赖数据库,所有粘贴内容存放在内存中
  • 超轻量:核心代码仅约 300 行,编译后是一个静态二进制文件
  • 速度快:基于 Actix-Web 框架,处理请求飞快
  • 代码高亮:粘贴 URL 后加文件扩展名即可启用语法高亮
  • curl 友好:一条curl命令即可提交和读取内容

💡 适合场景:团队内部共享配置、临时分享日志片段、作为 API 调试的"便签服务"。

📋 3 步部署总览

步骤内容预计耗时
1获取项目源码1 分钟
2构建多阶段 Docker 镜像2 分钟
3docker-compose 启动并验证1 分钟

第 1 步:获取 bin 项目源码

在终端执行以下命令克隆仓库(需要已安装 Docker):

git clone https://gitcode.com/gh_mirrors/bi/bin cd bin

克隆完成后,你会看到两个部署相关的核心文件:

  • Dockerfile:多阶段构建配置,是整个"小体积镜像"的关键
  • docker-compose.yml:服务编排配置,负责端口映射

第 2 步:解析 Dockerfile 多阶段构建 🐳

项目自带的 Dockerfile 采用了多阶段构建(Multi-stage Build),这是构建静态二进制小镜像的最佳实践:

# 第一阶段:编译环境(仅用于构建) FROM rust:1-alpine AS builder RUN apk add --no-cache musl-dev COPY . /sources WORKDIR /sources RUN cargo build --release # 第二阶段:运行时(FROM scratch = 空镜像!) FROM scratch COPY --from=builder /sources/target/release/bin /pastebin COPY --from=builder /etc/passwd /etc/passwd USER nobody EXPOSE 8000 ENTRYPOINT ["/pastebin", "0.0.0.0:8000"]

🔍三个关键设计

  1. musl-dev:使用 musl 标准库编译出静态链接的二进制文件,不依赖任何 glibc 动态库
  2. FROM scratch:最终镜像基于完全空白的 scratch 镜像,只包含可执行文件本身,镜像体积通常不到 5MB
  3. USER nobody:以非 root 用户运行,提升安全性

构建镜像只需一条命令:

docker build -t bin-paste:latest .

第 3 步:用 docker-compose 一键启动

docker-compose.yml 的配置非常简洁:

services: bin: build: context: . dockerfile: Dockerfile ports: - "8000:8000"

启动服务:

docker compose up -d

看到bin容器状态为Up后,浏览器访问http://服务器IP:8000,即可看到极简的粘贴页面。

✅ 部署后验证:3 种测试方式

方式一:浏览器测试

打开http://localhost:8000,输入内容提交,即可得到分享链接。

方式二:curl 命令行测试

# 提交内容 curl -X PUT --data 'hello world' http://localhost:8000 # 输出示例:/cateettary # 读取该粘贴 curl http://localhost:8000/cateettary

方式三:代码高亮测试

在粘贴链接后加上文件扩展名,例如/cateettary.rs,即可获得 Rust 代码的语法高亮显示。

⚙️ 启动参数配置指南

bin 支持 3 个启动参数(定义见 src/main.rs),按需修改 Dockerfile 中的ENTRYPOINT即可:

参数说明默认值
bind_addr(位置参数)监听地址127.0.0.1:8820
--buffer-size最大同时存储的粘贴条数,超出后自动淘汰最早的1000
--max-paste-size单条粘贴的最大字节数32KB

例如,想同时存储 5000 条、每条最大 128KB,可将 ENTRYPOINT 改为:

ENTRYPOINT ["/pastebin", "0.0.0.0:8000", "--buffer-size", "5000", "--max-paste-size", "131072"]

⚠️ 注意:内容仅存于内存,容器重启后所有粘贴会丢失。这正是"极简"设计的哲学——快速分享,无需持久化。

❓ 常见问题

Q:镜像为什么这么小?A:FROM scratch+ musl 静态编译的组合,最终镜像只有二进制文件本体,远小于基于 alpine 或 ubuntu 的镜像。

Q:如何限制访问?A:修改 docker-compose 中的端口映射为"127.0.0.1:8000:8000"仅本机可访问,或在外层加 Nginx 反向代理与 HTTPS。

Q:支持 IPv6 吗?A:支持,将bind_addr改为"[::]:8000"即可监听所有 IPv4/IPv6 地址。

📌 总结

特性说明
镜像体积约 5MB(scratch 基底)
依赖无数据库、无外部服务
端口8000
部署命令docker compose up -d

至此,你已经用3 步完成了体积超小的 paste bin 服务部署!整个过程无需数据库、无需配置文件,非常适合部署在任意一台闲置的小服务器上,成为团队内部高效的片段分享工具。

【免费下载链接】bin:wastebasket: a paste bin.项目地址: https://gitcode.com/gh_mirrors/bi/bin

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 9:43:43

电商后台商品规格参数管理:基于JSON模板的灵活设计与工程实践

1. 项目概述:为什么商品规格参数管理是电商的“心脏”?做电商后台开发这么多年,我处理过无数商品上架的请求,也见过太多因为规格参数混乱导致的“惨案”。一个看似简单的“颜色:红色、蓝色;尺码&#xff1a…

作者头像 李华
网站建设 2026/8/24 9:42:31

AI原生软件工程:从确定性构建到智能代理协同的范式革命

1. 从确定性到代理化:AI原生软件工程的范式革命“软件工程”这个词,在过去半个多世纪里,其内核始终围绕着“确定性”展开。我们编写严谨的规格说明书,设计精密的架构图,用瀑布模型或敏捷迭代来管理流程,最终…

作者头像 李华
网站建设 2026/8/24 9:42:13

HeliBoard 安装教程:三步快速用上离线开源隐私键盘

HeliBoard 安装教程:三步快速用上离线开源隐私键盘 【免费下载链接】HeliBoard Customizable and privacy-conscious open-source keyboard 项目地址: https://gitcode.com/gh_mirrors/he/HeliBoard HeliBoard 是一款完全离线的开源键盘,不申请网…

作者头像 李华
网站建设 2026/8/24 9:40:13

从北邮机试题看优先队列实战:自定义比较器与复数模最大问题

1. 项目概述:从一道复试机试题看优先队列的实战应用最近在整理一些知名高校的计算机专业复试机试题,北京邮电大学的这道“复数集合”题目让我眼前一亮。它初看平平无奇,就是维护一个集合,支持插入复数、查询并删除模最大的复数。但…

作者头像 李华