# alloy 镜像本地化 ## 背景 - 当前 alloy 容器(qihu-aiflow-alloy)用 `grafana/alloy:latest` + bind mount `/tmp/alloy → /etc/alloy:ro` 注入配置。 - 这种方式**风险**:`/tmp` 在重启时可能被清空,或运维误删 `/tmp/alloy` 导致 alloy 启动失败。 - bake 进镜像:让 alloy 容器自包含配置,符合容器 immutable 原则。 ## 目录 - `Dockerfile`:基于 `grafana/alloy:latest`,COPY 本目录 `config.alloy` 到 `/etc/alloy/config.alloy` - `config.alloy`:与宿主的 `/tmp/alloy/config.alloy` 同步(本目录是真相源,跑 build.sh 之前需更新) - `build.sh`:自动 build + tag ## Bake 步骤 1. `cd /www/wwwroot/qihuaiflow/alloy` 2. `./build.sh` → 产物 `qihuaiflow-alloy:verified-{TS}` 3. 修改 `docker-compose.yml` alloy 服务: ```yaml services: alloy: image: qihuaiflow-alloy:verified-20260810-154500 # 移除 volumes 里的 /tmp/alloy mount ``` 4. `docker compose up -d alloy` 5. 验证: `docker exec qihu-aiflow-alloy wget -q -O- http://localhost:12345/-/ready` ## ⚠️ 风险与回滚 - **风险**:重建期间 metrics 采集会中断 1-3 分钟 - **回滚**:docker compose 用 `qihuaiflow-alloy:latest`(原 grafana/alloy 基础 + bind mount)切回 - **建议执行时机**:低峰期(凌晨 1-5 点) ## 当前状态 - 配置:已同步(2026-08-10),包含 OTLP receiver(4317/4318) + traces 接收(暂不导出) - 镜像构建:本目录就绪,等待"低峰 bake 任务"执行 build.sh