Dockerfile 792 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. # syntax=docker/dockerfile:1.4
  2. FROM --platform=$BUILDPLATFORM golang:1.18-alpine AS builder
  3. WORKDIR /code
  4. ENV CGO_ENABLED 0
  5. ENV GOPATH /go
  6. ENV GOCACHE /go-build
  7. COPY go.mod go.sum ./
  8. RUN --mount=type=cache,target=/go/pkg/mod/cache \
  9. go mod download
  10. COPY . .
  11. RUN --mount=type=cache,target=/go/pkg/mod/cache \
  12. --mount=type=cache,target=/go-build \
  13. go build -o bin/backend main.go
  14. CMD ["/code/bin/backend"]
  15. FROM builder as dev-envs
  16. RUN <<EOF
  17. apk update
  18. apk add git
  19. EOF
  20. RUN <<EOF
  21. addgroup -S docker
  22. adduser -S --shell /bin/bash --ingroup docker vscode
  23. EOF
  24. # install Docker tools (cli, buildx, compose)
  25. COPY --from=gloursdocker/docker / /
  26. CMD ["go", "run", "main.go"]
  27. FROM scratch
  28. COPY --from=builder /code/bin/backend /usr/local/bin/backend
  29. CMD ["/usr/local/bin/backend"]