File
Blob: Dockerfile
| 1 | # syntax=docker/dockerfile:1 |
| 2 | |
| 3 | FROM --platform=$BUILDPLATFORM node:22.14.0-alpine AS ui-builder |
| 4 | RUN apk --no-cache add make |
| 5 | WORKDIR /app |
| 6 | COPY . . |
| 7 | |
| 8 | RUN make ui |
| 9 | |
| 10 | FROM --platform=$BUILDPLATFORM golang:1.27.1-alpine AS app-builder |
| 11 | RUN apk --no-cache add ca-certificates git |
| 12 | WORKDIR /app |
| 13 | COPY . . |
| 14 | COPY --from=ui-builder /app/ui/dist /app/ui/dist |
| 15 | |
| 16 | RUN --mount=type=cache,target=/root/go/pkg/mod \ |
| 17 | go mod download |
| 18 | |
| 19 | ARG TARGETOS |
| 20 | ARG TARGETARCH |
| 21 | ARG TARGETVARIANT |
| 22 | |
| 23 | RUN --mount=type=cache,target=/root/.cache/go-build \ |
| 24 | CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH GOAMD64=$([[ $TARGETARCH == "amd64" ]] && echo ${TARGETVARIANT:-v1} || echo "v1") GOARM=7 \ |
| 25 | go build -tags 'osusergo netgo no_mocks' \ |
| 26 | -ldflags "-s -w -extldflags -static -X go.miragespace.co/specter/spec.BuildVersion=`git rev-parse --short HEAD` -X go.miragespace.co/specter/spec.BuildTime=`date +%s`" \ |
| 27 | -o bin/specter . |
| 28 | |
| 29 | FROM scratch |
| 30 | WORKDIR /app |
| 31 | COPY --from=app-builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ |
| 32 | COPY --from=app-builder /app/bin/specter /app/specter |
| 33 | |
| 34 | ENTRYPOINT ["/app/specter"] |