Skip to content
File

Blob: Dockerfile

dockerfile35 lines
1# syntax=docker/dockerfile:1
2 
3FROM --platform=$BUILDPLATFORM node:22.14.0-alpine AS ui-builder
4RUN apk --no-cache add make
5WORKDIR /app
6COPY . .
7 
8RUN make ui
9 
10FROM --platform=$BUILDPLATFORM golang:1.27.1-alpine AS app-builder
11RUN apk --no-cache add ca-certificates git
12WORKDIR /app
13COPY . .
14COPY --from=ui-builder /app/ui/dist /app/ui/dist
15 
16RUN --mount=type=cache,target=/root/go/pkg/mod \
17 go mod download
18 
19ARG TARGETOS
20ARG TARGETARCH
21ARG TARGETVARIANT
22 
23RUN --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 
29FROM scratch
30WORKDIR /app
31COPY --from=app-builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
32COPY --from=app-builder /app/bin/specter /app/specter
33 
34ENTRYPOINT ["/app/specter"]