# syntax=docker/dockerfile:1.1.7-experimental # Base Go environment # ------------------- # pinned because of https://github.com/moby/moby/issues/45935 FROM golang:1.20.5-alpine as base WORKDIR /porter RUN apk update && apk add --no-cache gcc musl-dev git COPY go.mod go.sum ./ COPY /cmd ./cmd COPY /internal ./internal COPY /api ./api COPY /ee ./ee COPY /pkg ./pkg RUN --mount=type=cache,target=$GOPATH/pkg/mod \ go mod download # Go build environment # -------------------- FROM base AS build-go ARG version=production RUN --mount=type=cache,target=/root/.cache/go-build \ --mount=type=cache,target=$GOPATH/pkg/mod \ go build -ldflags '-w -s' -a -tags ee -o ./bin/migrate ./cmd/migrate # Deployment environment # ---------------------- FROM alpine RUN apk update COPY --from=build-go /porter/bin/migrate /porter/ CMD /porter/migrate