Dockerfile 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. # syntax=docker/dockerfile:1.1.7-experimental
  2. # Build environment for app
  3. # -------------------------
  4. FROM golang:1.15-alpine as build-env-1
  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 /server ./server
  11. RUN --mount=type=cache,target=$GOPATH/pkg/mod \
  12. go mod download
  13. RUN --mount=type=cache,target=/root/.cache/go-build \
  14. go build -ldflags '-w -s' -a -o ./bin/app ./cmd/app && \
  15. go build -ldflags '-w -s' -a -o ./bin/migrate ./cmd/migrate
  16. # Build environment for dashboard
  17. # -------------------------------
  18. FROM node:latest as build-env-2
  19. WORKDIR /webpack
  20. COPY ./dashboard ./
  21. RUN npm i
  22. ENV NODE_ENV=production
  23. # COPY /dashboard/src /webpack/src
  24. RUN npm run build
  25. # Deployment environment
  26. # ----------------------
  27. FROM alpine
  28. RUN apk update
  29. COPY --from=build-env-1 /porter/bin/app /porter/
  30. COPY --from=build-env-1 /porter/bin/migrate /porter/
  31. COPY --from=build-env-2 /webpack/build /porter/static
  32. ENV DEBUG=false
  33. ENV STATIC_FILE_PATH=/porter/static
  34. ENV SERVER_PORT=8080
  35. ENV SERVER_TIMEOUT_READ=5s
  36. ENV SERVER_TIMEOUT_WRITE=10s
  37. ENV SERVER_TIMEOUT_IDLE=15s
  38. ENV COOKIE_SECRETS=secret
  39. ENV QUICK_START=true
  40. EXPOSE 8080
  41. CMD /porter/migrate && /porter/app