A container registry that uses the AT Protocol for manifest storage and S3 for blob storage. atcr.io
docker container atproto go
at refactor 1.8 kB view raw
1FROM docker.io/golang:1.25.4-trixie AS builder 2 3ENV DEBIAN_FRONTEND=noninteractive 4 5RUN apt-get update && \ 6 apt-get install -y --no-install-recommends sqlite3 libsqlite3-dev && \ 7 rm -rf /var/lib/apt/lists/* 8 9WORKDIR /build 10 11COPY go.mod go.sum ./ 12RUN go mod download 13 14COPY . . 15 16RUN CGO_ENABLED=1 go build \ 17 -ldflags="-s -w -linkmode external -extldflags '-static'" \ 18 -tags sqlite_omit_load_extension \ 19 -trimpath \ 20 -o atcr-hold ./cmd/hold 21 22# ========================================== 23# Stage 2: Minimal FROM scratch runtime 24# ========================================== 25FROM scratch 26 27# Copy CA certificates for HTTPS (PDS connections) 28COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ 29# Copy timezone data for timestamp formatting 30COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo 31# Copy optimized binary (SQLite embedded) 32COPY --from=builder /build/atcr-hold /atcr-hold 33 34# Expose default port 35EXPOSE 8080 36 37# OCI image annotations 38LABEL org.opencontainers.image.title="ATCR Hold Service" \ 39 org.opencontainers.image.description="ATCR Hold Service - Bring Your Own Storage component for ATCR" \ 40 org.opencontainers.image.authors="ATCR Contributors" \ 41 org.opencontainers.image.source="https://tangled.org/evan.jarrett.net/at-container-registry" \ 42 org.opencontainers.image.documentation="https://tangled.org/evan.jarrett.net/at-container-registry" \ 43 org.opencontainers.image.licenses="MIT" \ 44 org.opencontainers.image.version="0.1.0" \ 45 io.atcr.icon="https://imgs.blue/evan.jarrett.net/1TpTOdtS60GdJWBYEqtK22y688jajbQ9a5kbYRFtwuqrkBAE" \ 46 io.atcr.readme="https://tangled.org/evan.jarrett.net/at-container-registry/raw/main/docs/hold.md" 47 48ENTRYPOINT ["/atcr-hold"]