OpenClaw—AI研究OpenClaw—AI研究
  • AI动态
  • OpenClaw教程
  • 技术解读
  • 用户故事

【开发日志】私域直播平台 Day 1: 8 容器 Docker 编排底座(2026-09-13)

【开发日志】私域直播平台 Day 1: 8 容器 Docker 编排底座(2026-09-13)

2026年9月13日 by WoodStone

私域直播平台 Day 1 的目标很朴素:把整套流媒体基础设施从单点脚本拼凑,升级成可一键拉起、可独立扩缩容的容器化底座。今天把 8 个核心服务装进了同一份 docker-compose,分别是 nginx、app、worker、mysql、redis、mediamtx、coturn、certbot,再叠一组 migrate 一次性任务负责数据库初始化。站点 HTTPS 已经上线,健康检查接口稳定返回绿色,所有流量强制从 HTTP 301 跳到 HTTPS,Let’s Encrypt 证书由 certbot 容器内自动续期。从「能跑」到「能上线」的距离,主要不是写代码,而是把今天踩到的八个坑一个个填上,让编排底座具备上线可观测性,这是后续业务快速迭代的根基。

决策一:coturn 一律走 host 网络。bridge 网络下映射 49152 到 65535 的 UDP 端口,会瞬间在宿主机上生成一万多条 iptables 规则,docker-proxy 进程随之爆炸,实测三次把主机打到假死重启。既然 TURN 的本质就是「端口随机协商」,直接 host 网络最干净,iptables 不再膨胀,运维排障也只盯一个网络栈,任何抓包与连通性测试都直接对主机网卡,所见即所得。决策二:构建全程走国内镜像。Dockerfile 里把 APT_MIRROR 默认指向腾讯云 apt 镜像、NPM_REGISTRY 默认指向 npmmirror,容器内构建时间从十几分钟压到两三分钟,后续在 CI 跑构建也能保持稳定速度。决策三:pnpm 锁版本到 9.x。仓库里的锁文件是 v9.0 格式,而 pnpm 10+ 默认禁用依赖构建脚本,直接 install 会硬失败。把基础镜像里 pnpm 钉到 9.x,并在 pnpm-workspace.yaml 里显式给 onlyBuiltDependencies 开白名单,既匹配既有锁文件,也避免后续 CI 翻车,同时保证未来升级 pnpm 时由人工显式打开白名单,而非默默放开风险。

坑与解法可以凝成三件。mediamtx v1.21 的配置比我们预想严格:runOnReady 这种字段必须加引号,api 和 encryption 的值只能是布尔而不是字符串;另外 distroless 镜像不带 shell,healthcheck 的 CMD-SHELL 形式根本跑不起来,只能改成直接执行二进制。nginx 启用 HTTPS 之后,80 强制跳 301,旧的探活路径直接被重定向,健康检查全挂,改成探测 HTTPS 端点才稳定。coturn 的探活原本用 nc,但它在容器里时灵时不灵,换成 turnutils_stunclient 才稳定返回结果。worker 容器从基础镜像继承了 HEALTHCHECK,但它的主进程是常驻队列消费者,不存在「主进程退出即异常」的语义,显式禁用继承探活,改由编排层用任务超时判定,信号语义与进程模型对齐。最后,RTMP 1935 端口最早由 nginx 反代到 mediamtx,但反代会在 3 秒空闲后切断推流,后来直接让 mediamtx 对外监听,推流稳定,端口冲突也消失。

验收层面,8 个容器全部 healthy,migrate 一次性执行后容器自动退出,健康检查接口返回 JSON 中包含 service 名与 uptime 字段。HTTPS 证书 90 天有效期已写入 certbot 续期任务,首次续期会在到期前自动触发,无需人工介入。Day 1 收尾意味着基础设施这一层可以视为稳定基线,Day 2 起进入业务层:房间模型、推流鉴权、回放与点播、运营后台。基础设施的稳定性会直接决定业务迭代速度,这一步踩稳了,后面每一天都可以放心往前跑,把全部精力放在功能交付而不是环境排障上。

← 返回文章列表
分类: 技术解读 标记: 8容器, Day1, Docker, 开发日志, 电商直播, 私域直播

© 2026 OpenClaw—AI研究 版权所有

沪ICP备2026010690号-1