# ============================================================
# MIXAPI 镜像 — 官方无 Docker Hub 镜像，本文件从 GitHub Release
# 下载官方编译好的二进制构建（与上游仓库 Dockerfile 思路一致）。
#
# build:: docker build --build-arg MIXAPI_VER=v2.5.1cl -t hub.6t7.net/cnphpbb/mixapi:v2.5.1cl .
#          （-t tag 需与 env.cfg 的 IMAGE_TAG 保持一致）
# buildx:: docker buildx build --platform linux/amd64,linux/arm64 \
#            --build-arg MIXAPI_VER=v2.5.1cl \
#            -t hub.6t7.net/cnphpbb/mixapi:v2.5.1cl --push .
# run::   docker run --name mixapi -d --restart always -p 3000:3000 \
#            -v /data/volumes/mixapi/data:/data -e TZ=Asia/Shanghai hub.6t7.net/cnphpbb/mixapi:v2.5.1cl
#
# disc:: MIXAPI_VER 需与 GitHub release tag 同名，二进制命名规则：
#        mixapi-${MIXAPI_VER}-linux-${amd64|arm64}
# disc:: 多平台构建时每个 --platform 的 RUN 阶段都会按 apk --print-arch
#        自动下载对应架构二进制（需 QEMU/binfmt；也可 --build-arg MIXAPI_ARCH 显式指定）
# disc:: 数据目录：容器内工作目录为 /data（不配置 SQL_DSN 时默认使用
#        /data 下的 SQLite 数据文件，文件名随版本；--log-dir 未指定时日志在 /data/logs）
# ============================================================

FROM alpine:3.21

# wget 下载二进制 + 健康检查；tzdata 保证 TZ=Asia/Shanghai 时区生效；ca-certificates 保证 HTTPS
RUN apk add --no-cache wget ca-certificates tzdata \
    && rm -rf /var/cache/apk/*

WORKDIR /app

# 版本号（与 release tag 同名），可用 --build-arg 覆盖
ARG MIXAPI_VER=v2.5.1cl
# 架构后缀，留空则按构建机架构自动识别（amd64/arm64）
ARG MIXAPI_ARCH=
RUN set -eux; \
    if [ -z "${MIXAPI_ARCH}" ]; then \
        case "$(apk --print-arch)" in \
            x86_64)  MIXAPI_ARCH=amd64 ;; \
            aarch64) MIXAPI_ARCH=arm64 ;; \
            *) echo "不支持的架构: $(apk --print-arch)" >&2; exit 1 ;; \
        esac; \
    fi; \
    wget -O mixapi "https://github.com/aiprodcoder/MIXAPI/releases/download/${MIXAPI_VER}/mixapi-${MIXAPI_VER}-linux-${MIXAPI_ARCH}"; \
    chmod +x mixapi

# 数据/日志工作目录（与上游 Dockerfile 约定一致）
WORKDIR /data
EXPOSE 3000

# 用 ENTRYPOINT 便于 compose 追加参数（如 --log-dir /app/logs）
ENTRYPOINT ["/app/mixapi"]
