forked from DevOps/deploy.stack
- Dockerfile/compose 头部与 readme 补充 buildx 多架构(amd64+arm64)构建示例 - IMAGE_TAG 默认改指私有仓库 hub.6t7.net/cnphpbb/mixapi 并同步各处 tag
50 lines
2.3 KiB
Docker
50 lines
2.3 KiB
Docker
# ============================================================
|
||
# 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"]
|