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