docs(mixapi): 补充 buildx 多架构构建并调整镜像仓库

- Dockerfile/compose 头部与 readme 补充 buildx 多架构(amd64+arm64)构建示例
- IMAGE_TAG 默认改指私有仓库 hub.6t7.net/cnphpbb/mixapi 并同步各处 tag
This commit is contained in:
cnphpbb
2026-09-03 21:54:10 +08:00
parent 4afb627314
commit 9b823ba34e
5 changed files with 53 additions and 18 deletions
+9 -3
View File
@@ -2,14 +2,20 @@
# MIXAPI 镜像 — 官方无 Docker Hub 镜像,本文件从 GitHub Release
# 下载官方编译好的二进制构建(与上游仓库 Dockerfile 思路一致)。
#
# build:: docker build --build-arg MIXAPI_VER=v2.5.1cl -t mixapi:v2.5.1cl .
# 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 mixapi:v2.5.1cl
# -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/one-api.db 的 SQLite--log-dir 未指定时日志在 /data/logs
# /data 下的 SQLite 数据文件,文件名随版本--log-dir 未指定时日志在 /data/logs
# ============================================================
FROM alpine:3.21
+12 -6
View File
@@ -6,11 +6,17 @@
# 使用方式(在 deploy.stack 仓库根目录执行):
# cp mixapi/env.cfg.example mixapi/env.cfg
# $EDITOR mixapi/env.cfg # 填入真实密码后保存
# 本地单架构构建(-t 打与 IMAGE_TAG 相同的 tag):
# docker build --build-arg MIXAPI_VER=${IMAGE_TAG_VER} -t ${IMAGE_TAG} ./mixapi
# 多架构(amd64+arm64)构建并推送私有仓库:
# docker buildx build --platform linux/amd64,linux/arm64 \
# --build-arg MIXAPI_VER=${IMAGE_TAG_VER} -t ${IMAGE_TAG} --push ./mixapi
# 然后拉起(镜像已本地存在或已推送至仓库):
# docker compose -p mixapi --env-file ./mixapi/env.cfg -f ./mixapi/stack.yml up -d
#
# 说明:MIXAPI 官方未发布 Docker Hub 镜像(GitHub 仅提供 release 二进制),
# IMAGE_TAG 指向本地构建的镜像,需先按上面命令 docker build。
# IMAGE_TAG 默认指向私有仓库 hub.6t7.net/cnphpbb/mixapi(换仓库地址时须与
# buildx/build 推送地址保持一致),需先按上面命令构建/推送再拉起。
# 本栈为全容器化独立部署(MIXAPI + Redis + PostgreSQL),
# 容器内 PostgreSQL 会自动初始化库和账号,无需在宿主机手动建库或配置 pg_hba。
# 容器 PG 未映射宿主机端口,不会与宿主机已有的 PostgreSQL 服务产生端口冲突。
@@ -22,18 +28,18 @@
# 含 @ : / # 等字符时需做百分号转义
# - MIXAPI 首次启动无管理员账号:浏览器打开后走 /setup 页,
# 创建的第一个账号即为 root(同 new-api 行为)
# - 如已把镜像推到私有仓库(如 hub.tp229.com:3500/mixapi),
# 把 IMAGE_TAG 改为仓库地址即可跳过本地 docker build
# - 换用其它私有仓库时,同步修改 IMAGE_TAG 与 buildx/build 命令里的仓库地址
# ---------- 端口 ----------
# MIXAPI Web 服务对外暴露端口(与 newapi 默认同为 3000,同机部署需改其一)
PORT=3000
# ---------- 镜像(本地构建)----------
# ---------- 镜像(无官方 Docker Hub 镜像,走私有仓库/本地构建)----------
# MIXAPI 版本号(与 GitHub release tag 同名,如 v2.5.1cl
IMAGE_TAG_VER=v2.5.1cl
# 完整镜像引用默认本地镜像;已推送私有仓库则改为 仓库地址/mixapi:${IMAGE_TAG_VER}
IMAGE_TAG=mixapi:${IMAGE_TAG_VER}
# 完整镜像引用默认 hub.6t7.net/cnphpbb/mixapi 私有仓库;
# 本地单架构可 docker build 打同名 tag 直接使用,多架构用 buildx --push
IMAGE_TAG=hub.6t7.net/cnphpbb/mixapi:${IMAGE_TAG_VER}
# Redis 镜像
REDIS_IMAGE_TAG=redis:8.2
# PostgreSQL 镜像
+24 -7
View File
@@ -9,18 +9,35 @@ MIXAPI 基于 New-API/One-API 二次开发,配置语义与 `../newapi` 同源
MIXAPI 官方**没有发布 Docker Hub 镜像**:仓库 CI 与 README 的分发方式是
GitHub Release 二进制(或自行 `docker build`)。本目录 `Dockerfile` 即采用
官方方式——构建时从 GitHub Release 下载与 `IMAGE_TAG_VER` 同名的二进制
官方方式——构建时从 GitHub Release 下载与 `IMAGE_TAG_VER` 同名的二进制
`IMAGE_TAG` 默认指向私有仓库 `hub.6t7.net/cnphpbb/mixapi`
```bash
docker build --build-arg MIXAPI_VER=v2.5.1cl -t mixapi:v2.5.1cl ./mixapi
# 本地单架构构建(-t 与 env.cfg 的 IMAGE_TAG 一致;打同名 tag 后 compose 直接使用)
docker build --build-arg MIXAPI_VER=v2.5.1cl -t hub.6t7.net/cnphpbb/mixapi:v2.5.1cl ./mixapi
```
- 版本号:`env.cfg``IMAGE_TAG_VER`(默认 `v2.5.1cl`),需与
https://github.com/aiprodcoder/MIXAPI/releases 的 tag 同名;
- 架构:构建机 x86_64 → amd64aarch64 → arm64,跨架构构建可用
`--build-arg MIXAPI_ARCH=amd64` 显式指定;
- 若已把镜像推送到私有仓库(如 `hub.tp229.com:3500/mixapi`),把 `env.cfg`
`IMAGE_TAG` 改为仓库地址,即可跳过本地构建,走常规 `pull`
- 换用其它私有仓库时,同步修改 `env.cfg``IMAGE_TAG` 与构建命令里的仓库地址。
### 多架构构建(buildx
一台构建机同时产出 amd64 + arm64(如 x86_64 服务器 + 树莓派)并推送私有仓库时,
用 buildx(多平台构建需 QEMU/binfmt,先 `docker buildx create --use`
多平台产物必须 `--push``--load` 只能装载本机架构镜像):
```bash
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 ./mixapi
```
推送完成后各主机直接 `docker compose ... up -d`(或先 `docker compose ... pull`)即可。
## 部署方式 A:全容器化独立栈(stack.yml
@@ -31,8 +48,8 @@ docker build --build-arg MIXAPI_VER=v2.5.1cl -t mixapi:v2.5.1cl ./mixapi
mkdir -pv /data/volumes/mixapi/{data,logs,redis,pgsql_data}
cp mixapi/env.cfg.example mixapi/env.cfg && vim mixapi/env.cfg # 填密码
# 2. 构建镜像(首次或升级版本时)
docker build --build-arg MIXAPI_VER=v2.5.1cl -t mixapi:v2.5.1cl ./mixapi
# 2. 构建镜像(首次或升级版本时-t 与 env.cfg 的 IMAGE_TAG 一致
docker build --build-arg MIXAPI_VER=v2.5.1cl -t hub.6t7.net/cnphpbb/mixapi:v2.5.1cl ./mixapi
# 3. 启动 / 状态 / 日志
docker compose -p mixapi --env-file ./mixapi/env.cfg -f ./mixapi/stack.yml up -d
@@ -60,7 +77,7 @@ CREATE DATABASE mixapi OWNER mixapi;
```bash
mkdir -pv /data/volumes/mixapi/{data,logs}
cp mixapi/env.cfg.example mixapi/env.cfg && vim mixapi/env.cfg # 填 prod-postgres 密码
docker build --build-arg MIXAPI_VER=v2.5.1cl -t mixapi:v2.5.1cl ./mixapi
docker build --build-arg MIXAPI_VER=v2.5.1cl -t hub.6t7.net/cnphpbb/mixapi:v2.5.1cl ./mixapi
docker compose -p mixapi-host --env-file ./mixapi/env.cfg -f ./mixapi/stack.host.yml up -d
```
+4 -1
View File
@@ -1,4 +1,7 @@
# build:: docker build --build-arg MIXAPI_VER=v2.5.1cl -t mixapi:v2.5.1cl ./mixapi
# build:: docker build --build-arg MIXAPI_VER=v2.5.1cl -t hub.6t7.net/cnphpbb/mixapi:v2.5.1cl ./mixapi
# 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 ./mixapi
# path:: mkdir -pv /data/volumes/mixapi/{data,logs}
# run:: docker compose -p mixapi-host --env-file ./mixapi/env.cfg -f ./mixapi/stack.host.yml up -d
# disc:: 单容器部署:复用 prod-dbs 项目里的 prod-postgresjoin 同一 docker 网络解析)
+4 -1
View File
@@ -1,5 +1,8 @@
# path:: mkdir -pv /data/volumes/mixapi/{data,logs,redis,pgsql_data}
# build:: docker build --build-arg MIXAPI_VER=v2.5.1cl -t mixapi:v2.5.1cl ./mixapi
# build:: docker build --build-arg MIXAPI_VER=v2.5.1cl -t hub.6t7.net/cnphpbb/mixapi:v2.5.1cl ./mixapi
# 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 ./mixapi
# run:: docker compose -p mixapi --env-file ./mixapi/env.cfg -f ./mixapi/stack.yml up -d
# disc:: 全栈容器化部署:包含 MIXAPI、Redis 缓存及 PostgreSQL 数据库
# disc:: 容器间处于自定义桥接网络 mixapi 内,内部通过服务名 postgres:5432 / redis:6379 互通