Download Dockerfile from anyalerob/ccpoad: direct link, hf CLI and curl.
- Browser
- Download file 2.67 kB
-
https://huggingface.co/spaces/anyalerob/ccpoad/resolve/main/Dockerfile
- Command line
-
hf download hf://spaces/anyalerob/ccpoad/Dockerfile
-
curl -L -o Dockerfile https://huggingface.co/spaces/anyalerob/ccpoad/resolve/main/Dockerfile
2.67 kB
| # ccLoad Docker镜像构建文件 | |
| # 多平台构建:使用 tonistiigi/xx 交叉编译,避免 QEMU 模拟 | |
| # syntax=docker/dockerfile:1.4 | |
| # ============================================ | |
| # 阶段1: 基础工具链 (与 TARGETPLATFORM 无关,可复用) | |
| # ============================================ | |
| FROM --platform=$BUILDPLATFORM golang:1.25-alpine AS base | |
| # 安装交叉编译工具链(这层很少变,缓存命中率高) | |
| COPY --from=tonistiigi/xx:1.6.1 / / | |
| RUN apk add --no-cache git ca-certificates tzdata clang lld | |
| WORKDIR /app | |
| # ============================================ | |
| # 阶段2: 依赖下载 (go.mod 不变就复用) | |
| # ============================================ | |
| FROM base AS deps | |
| # 设置Go模块代理 | |
| ENV GOPROXY=https://proxy.golang.org,direct | |
| COPY go.mod go.sum ./ | |
| RUN --mount=type=cache,target=/go/pkg/mod \ | |
| go mod download | |
| # ============================================ | |
| # 阶段3: 构建 (仅此处依赖 TARGETPLATFORM) | |
| # ============================================ | |
| FROM deps AS builder | |
| # 版本号参数(带默认值,更健壮) | |
| ARG VERSION=dev | |
| ARG COMMIT=unknown | |
| # 配置目标平台的交叉编译工具链 | |
| ARG TARGETPLATFORM | |
| RUN xx-apk add musl-dev gcc | |
| # 复制源代码 | |
| COPY . . | |
| # 静态编译 | |
| ENV CGO_ENABLED=0 | |
| RUN --mount=type=cache,target=/root/.cache/go-build \ | |
| --mount=type=cache,target=/go/pkg/mod \ | |
| BUILD_VERSION=${VERSION} && \ | |
| BUILD_COMMIT=$(echo "${COMMIT}" | cut -c1-7) && \ | |
| BUILD_TIME=$(date '+%Y-%m-%d %H:%M:%S %z') && \ | |
| xx-go build \ | |
| -tags sonic \ | |
| -buildvcs=false \ | |
| -trimpath \ | |
| -ldflags="-s -w \ | |
| -X ccLoad/internal/version.Version=${BUILD_VERSION} \ | |
| -X ccLoad/internal/version.Commit=${BUILD_COMMIT} \ | |
| -X 'ccLoad/internal/version.BuildTime=${BUILD_TIME}' \ | |
| -X ccLoad/internal/version.BuiltBy=docker" \ | |
| -o ccload . && \ | |
| xx-verify ccload | |
| # ============================================ | |
| # 阶段4: 运行时镜像 (最小化) | |
| # ============================================ | |
| FROM alpine:3.21 | |
| # 安装运行时依赖 | |
| RUN apk --no-cache add ca-certificates tzdata | |
| # 创建非root用户 | |
| RUN addgroup -g 1001 -S ccload && \ | |
| adduser -u 1001 -S ccload -G ccload | |
| WORKDIR /app | |
| # 从构建阶段复制(web资源已嵌入二进制) | |
| COPY --from=builder /app/ccload . | |
| # 创建数据目录并设置权限 | |
| RUN mkdir -p /app/data && \ | |
| chown -R ccload:ccload /app | |
| USER ccload | |
| EXPOSE 7860 | |
| ENV PORT=7860 \ | |
| SQLITE_PATH=/app/data/ccload.db \ | |
| GIN_MODE=release | |
| HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ | |
| CMD wget --no-verbose --tries=1 --spider http://localhost:7860/health || exit 1 | |
| CMD ["./ccload"] | |