Dockerfile 792 B

123456789101112131415161718192021222324252627282930313233343536
  1. # syntax=docker/dockerfile:1.1.7-experimental
  2. # Base Go environment
  3. # -------------------
  4. FROM golang:1.20-alpine as base
  5. WORKDIR /porter
  6. RUN apk update && apk add --no-cache gcc musl-dev git
  7. COPY go.mod go.sum ./
  8. COPY /cmd ./cmd
  9. COPY /internal ./internal
  10. COPY /api ./api
  11. COPY /ee ./ee
  12. COPY /pkg ./pkg
  13. RUN --mount=type=cache,target=$GOPATH/pkg/mod \
  14. go mod download
  15. # Go build environment
  16. # --------------------
  17. FROM base AS build-go
  18. ARG version=production
  19. RUN --mount=type=cache,target=/root/.cache/go-build \
  20. --mount=type=cache,target=$GOPATH/pkg/mod \
  21. go build -ldflags '-w -s' -a -tags ee -o ./bin/migrate ./cmd/migrate
  22. # Deployment environment
  23. # ----------------------
  24. FROM alpine
  25. RUN apk update
  26. COPY --from=build-go /porter/bin/migrate /porter/
  27. CMD /porter/migrate