1FROM --platform=${BUILDPLATFORM:-linux/amd64} golang:1.24.3-alpine3.21 as builder
2
3ARG TARGETPLATFORM
4ARG BUILDPLATFORM
5ARG TARGETOS
6ARG TARGETARCH
7
8#needed for sqlite
9RUN apk add --update gcc musl-dev
10
11# step 1. dep cache
12WORKDIR /app
13ARG TARGETPLATFORM=${BUILDPLATFORM:-linux/amd64}
14COPY go.mod go.sum ./
15RUN go mod download
16
17# step 2. build the actual app
18WORKDIR /app
19COPY . .
20#generate the jwks
21RUN go run github.com/haileyok/atproto-oauth-golang/cmd/helper generate-jwks
22RUN GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -ldflags='-w -s -extldflags "-static"' -o main ./cmd
23ARG TARGETOS=${TARGETPLATFORM%%/*}
24ARG TARGETARCH=${TARGETPLATFORM##*/}
25
26FROM --platform=${TARGETPLATFORM:-linux/amd64} alpine:3.21
27#Creates an empty /db folder for docker compose
28WORKDIR /db
29WORKDIR /app
30COPY --from=builder /app/main /app/main
31COPY --from=builder /app/jwks.json /app/jwks.json
32ENTRYPOINT ["/app/main"]