ee.Dockerfile 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. # syntax=docker/dockerfile:1.1.7-experimental
  2. # Base Go environment
  3. # -------------------
  4. FROM golang:1.18-alpine as base
  5. WORKDIR /porter
  6. RUN apk update && apk add --no-cache gcc musl-dev git protoc
  7. COPY go.mod go.sum ./
  8. COPY /cmd ./cmd
  9. COPY /internal ./internal
  10. COPY /api ./api
  11. COPY /ee ./ee
  12. COPY /scripts ./scripts
  13. COPY /provisioner ./provisioner
  14. COPY /pkg ./pkg
  15. COPY /workers ./workers
  16. RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26
  17. RUN go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1
  18. RUN --mount=type=cache,target=$GOPATH/pkg/mod \
  19. go mod download
  20. # Go build environment
  21. # --------------------
  22. FROM base AS build-go
  23. # build proto files
  24. RUN sh ./scripts/build/proto.sh
  25. ARG version=production
  26. RUN --mount=type=cache,target=/root/.cache/go-build \
  27. --mount=type=cache,target=$GOPATH/pkg/mod \
  28. go build -ldflags="-w -s -X 'main.Version=${version}'" -tags ee -a -o ./bin/app ./cmd/app && \
  29. go build -ldflags '-w -s' -a -tags ee -o ./bin/migrate ./cmd/migrate && \
  30. go build -ldflags '-w -s' -a -tags ee -o ./bin/ready ./cmd/ready && \
  31. go build -ldflags '-w -s' -a -tags ee -o ./bin/worker-pool ./workers
  32. # Go test environment
  33. # -------------------
  34. FROM base AS porter-test
  35. RUN --mount=type=cache,target=/root/.cache/go-build \
  36. --mount=type=cache,target=$GOPATH/pkg/mod \
  37. go test ./...
  38. # Webpack build environment
  39. # -------------------------
  40. FROM node:16 as build-webpack
  41. WORKDIR /webpack
  42. COPY ./dashboard ./
  43. RUN npm install -g npm@8.1
  44. RUN npm i --legacy-peer-deps
  45. RUN npm run build
  46. # Deployment environment
  47. # ----------------------
  48. FROM alpine
  49. RUN apk update
  50. COPY --from=build-go /porter/bin/app /porter/
  51. COPY --from=build-go /porter/bin/migrate /porter/
  52. COPY --from=build-go /porter/bin/ready /porter/
  53. COPY --from=build-go /porter/bin/worker-pool /porter/worker-pool
  54. COPY --from=build-webpack /webpack/build /porter/static
  55. ENV DEBUG=false
  56. ENV STATIC_FILE_PATH=/porter/static
  57. ENV SERVER_PORT=8080
  58. ENV SERVER_TIMEOUT_READ=5s
  59. ENV SERVER_TIMEOUT_WRITE=10s
  60. ENV SERVER_TIMEOUT_IDLE=15s
  61. ENV COOKIE_SECRETS=secret
  62. ENV SQL_LITE=true
  63. ENV ADMIN_INIT=false
  64. EXPOSE 8080
  65. CMD /porter/migrate && /porter/app && /porter/worker-pool&