| |
| |
| |
|
|
| |
| |
| |
| 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 |
|
|
| |
| |
| |
| FROM base AS deps |
|
|
| |
| ENV GOPROXY=https://proxy.golang.org,direct |
|
|
| COPY go.mod go.sum ./ |
| RUN --mount=type=cache,target=/go/pkg/mod \ |
| go mod download |
|
|
| |
| |
| |
| 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 |
|
|
| |
| |
| |
| FROM alpine:3.21 |
|
|
| |
| RUN apk --no-cache add ca-certificates tzdata |
|
|
| |
| RUN addgroup -g 1001 -S ccload && \ |
| adduser -u 1001 -S ccload -G ccload |
|
|
| WORKDIR /app |
|
|
| |
| 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"] |
|
|