Skip to content

Docker 构建与推送到 Docker Hub

本文说明如何从源码构建 OmniBox 镜像,以及如何通过 GitHub Actions 将镜像推送到 Docker Hub(及可选的 GitHub Container Registry)。

发布流程概述

  1. 在仓库中打版本 tag(如 1.2.0
  2. 推送 tag 到远程,触发 GitHub Actions
  3. CI 构建完整版与 Lite 版镜像,推送到 Docker Hub(及可选 GHCR)
  4. 可选:CI 自动创建 GitHub Release

所需 Secrets

在仓库 Settings → Secrets and variables → Actions 中配置:

Secret说明
DOCKER_USERNAMEDocker Hub 用户名
DOCKER_PASSWORDDocker Hub 密码或 Access Token

推送 GitHub Container Registry 使用 GITHUB_TOKEN,无需额外配置(若仓库允许写入 packages)。

打 tag 触发发布

bash
# 打版本 tag
git tag 1.2.0

# 推送到远程,触发 CD 工作流
git push origin 1.2.0

推送后,Actions 会构建并推送以下镜像:

  • 完整版<DOCKER_USERNAME>/omnibox:<version><DOCKER_USERNAME>/omnibox:latest
  • Lite 版<DOCKER_USERNAME>/omnibox:<version>-lite<DOCKER_USERNAME>/omnibox:lite

平台:linux/amd64linux/arm64

本地多架构构建与推送

若需在本地构建并直接推送到 Docker Hub:

bash
# 登录 Docker Hub
docker login

# 多架构构建并推送(完整版)
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t <你的用户>/omnibox:latest \
  -f Dockerfile \
  --push .

# 多架构构建并推送(Lite 版)
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t <你的用户>/omnibox:lite \
  -f Dockerfile.lite \
  --push .

单架构本地构建:

bash
# 完整版
docker build -t omnibox:latest -f Dockerfile .
docker run -d --name omnibox -p 7023:7023 -v omnibox-data:/app/data omnibox:latest

# Lite 版
docker build -f Dockerfile.lite -t omnibox:lite .

相关文件

  • 工作流定义:.github/workflows/cd.yml
  • 完整版镜像:Dockerfile
  • 精简版镜像:Dockerfile.lite