Eric Bower
·
2025-06-15
Dockerfile.cdn
1FROM --platform=$BUILDPLATFORM golang:1.24 AS builder-deps
2LABEL maintainer="Pico Maintainers <hello@pico.sh>"
3
4WORKDIR /app
5
6RUN apt-get update
7RUN apt-get install -y git ca-certificates
8
9COPY go.* ./
10
11RUN --mount=type=cache,target=/go/pkg/,rw \
12 --mount=type=cache,target=/root/.cache/,rw \
13 go mod download
14
15FROM builder-deps AS builder-web
16
17COPY . .
18
19ARG TARGETOS
20ARG TARGETARCH
21
22ENV CGO_ENABLED=0
23ENV LDFLAGS="-s -w"
24
25ENV GOOS=${TARGETOS} GOARCH=${TARGETARCH}
26
27RUN --mount=type=cache,target=/go/pkg/,rw \
28 --mount=type=cache,target=/root/.cache/,rw \
29 go build -ldflags "$LDFLAGS" -o /go/bin/pgs-cdn ./cmd/pgs/cdn
30
31FROM scratch AS release-web
32
33WORKDIR /app
34
35COPY --from=builder-web /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
36COPY --from=builder-web /go/bin/pgs-cdn ./web
37
38ENTRYPOINT ["/app/web"]