# agent-news — бот + claude-code CLI + MCP-мост в одном контейнере (Decision: см. план). # Контекст сборки = корень репозитория (нужны bot/ и mcp_server/). # docker build -f runner/Dockerfile -t agent-news:dev . # ── stage 1: компиляция agent-news-bot ────────────────────────────────── FROM mirror.service.bearsdev.tech/library/dart:stable AS bot-build WORKDIR /build COPY bot/pubspec.* ./ RUN dart pub get COPY bot/ ./ RUN dart pub get --offline \ && dart compile exe bin/agent_news_bot.dart -o /build/agent-news-bot # ── stage 2: компиляция agent-news-mcp ────────────────────────────────── FROM mirror.service.bearsdev.tech/library/dart:stable AS mcp-build WORKDIR /build COPY mcp_server/pubspec.* ./ RUN dart pub get COPY mcp_server/ ./ RUN dart pub get --offline \ && dart compile exe bin/agent_news_mcp.dart -o /build/agent-news-mcp # ── stage 3: runtime — node (для claude-code CLI) + оба dart-бинарника ── FROM mirror.service.bearsdev.tech/library/node:22-slim RUN apt-get update \ && apt-get install -y --no-install-recommends ca-certificates curl \ && rm -rf /var/lib/apt/lists/* \ && npm install -g @anthropic-ai/claude-code \ && npm cache clean --force COPY --from=bot-build /build/agent-news-bot /usr/local/bin/agent-news-bot COPY --from=mcp-build /build/agent-news-mcp /usr/local/bin/agent-news-mcp RUN chmod +x /usr/local/bin/agent-news-bot /usr/local/bin/agent-news-mcp RUN useradd -m -u 10001 agent COPY --chown=agent:agent runner/claude-config /home/agent/claude-config USER agent WORKDIR /home/agent ENV MCP_CONFIG_PATH=/home/agent/claude-config/mcp.json # ~/.claude (OAuth-логин claude-code) монтируется сюда через PVC — см. deploy/agent-news. CMD ["agent-news-bot"]