# CI/CD 工具镜像预拉（一次性拉取所有 CI 与构建需要的镜像到本地）
# 用途：actrunner 的 container job 会优先使用本地镜像缓存，避免每次 CI 联网拉取
#
# 用法：
#   docker compose -f infra/docker-compose.tools.yml pull
#
# 拉取后可用 docker images 查看所有 edu 相关镜像
# 这不是常驻服务，只是借用 compose 的批量 pull 能力

name: edu-tools

services:
  # ===== CI 运行时镜像（actrunner container job 使用）=====
  node-ci:
    image: node:22-alpine
    command: ["echo", "node-ci image pulled"]

  golang-ci:
    image: golang:1.22-alpine
    command: ["echo", "golang-ci image pulled"]

  buf-ci:
    image: bufbuild/buf:latest
    command: ["echo", "buf-ci image pulled"]

  docker-ci:
    image: docker:25-git
    command: ["echo", "docker-ci image pulled"]

  # ===== 服务构建基础镜像（Dockerfile FROM）=====
  # teacher-portal / classes 的 builder 阶段
  node-builder:
    image: node:20-alpine
    command: ["echo", "node-builder image pulled"]

  # api-gateway 的 builder 阶段
  golang-builder:
    image: golang:1.22-alpine
    command: ["echo", "golang-builder image pulled"]

  # api-gateway 的 runner 阶段
  alpine-runner:
    image: alpine:3.20
    command: ["echo", "alpine-runner image pulled"]

  # ===== 开发/测试基础设施（生产用已有的，不在此管理）=====
  # 服务器已有的 MySQL/Redis 不在此拉取
  # 仅用于本地开发测试环境（docker-compose.dev.yml，如有）
  mysql-dev:
    image: mysql:8.0
    command: ["echo", "mysql-dev image pulled"]

  redis-dev:
    image: redis:7-alpine
    command: ["echo", "redis-dev image pulled"]
