Dockerfile 856 B

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