| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- # syntax=docker/dockerfile:1.1.7-experimental
- # Base Go environment
- # -------------------
- # pinned because of https://github.com/moby/moby/issues/45935
- FROM golang:1.20.5-alpine as base
- WORKDIR /porter
- RUN apk update && apk add --no-cache gcc musl-dev git protoc
- ARG CGO_ENABLED=0
- COPY go.mod go.sum ./
- COPY /cmd ./cmd
- COPY /internal ./internal
- COPY /api ./api
- COPY /scripts ./scripts
- COPY /provisioner ./provisioner
- COPY /pkg ./pkg
- RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26
- RUN go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1
- RUN go mod download
- # Go build environment
- # --------------------
- FROM base AS build-go
- ARG version=production
- ARG CGO_ENABLED=0
- # build proto files
- RUN sh ./scripts/build/proto.sh
- RUN go build -ldflags="-w -s -X 'main.Version=${version}'" -a -o ./bin/app ./cmd/app && \
- go build -ldflags '-w -s' -a -o ./bin/migrate ./cmd/migrate && \
- go build -ldflags '-w -s' -a -o ./bin/ready ./cmd/ready
- # Webpack build environment
- # -------------------------
- FROM node:16 as build-webpack
- WORKDIR /webpack
- COPY ./dashboard ./
- RUN npm install -g npm@8.1
- RUN npm i --legacy-peer-deps
- ENV NODE_ENV=production
- RUN npm run build
- # Deployment environment
- # ----------------------
- FROM alpine
- RUN apk update
- COPY --from=build-go /porter/bin/app /porter/
- COPY --from=build-go /porter/bin/migrate /porter/
- COPY --from=build-go /porter/bin/ready /porter/
- COPY --from=build-webpack /webpack/build /porter/static
- ENV DEBUG=false
- ENV STATIC_FILE_PATH=/porter/static
- ENV SERVER_PORT=8080
- ENV SERVER_TIMEOUT_READ=5s
- ENV SERVER_TIMEOUT_WRITE=10s
- ENV SERVER_TIMEOUT_IDLE=15s
- ENV COOKIE_SECRETS=secret
- ENV SQL_LITE=true
- ENV ADMIN_INIT=false
- EXPOSE 8080
- CMD /porter/migrate && /porter/app
|