# syntax=docker/dockerfile:1.7 ARG TARGETOS=linux ARG TARGETARCH=amd64 FROM golang:alpine AS build ARG APP_VERSION=dev ARG GIT_REV=unknown ARG BUILD_BRANCH=unknown ARG BUILD_DATE=unknown ARG BUILD_USER=ci ENV GO111MODULE=on ENV PATH="/go/bin:${PATH}" WORKDIR /src COPY . . RUN apk add --no-cache bash git build-base protoc protobuf-dev \ && go install google.golang.org/protobuf/cmd/protoc-gen-go@latest \ && go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest \ && bash ci/scripts/proto/generate.sh WORKDIR /src/api/server RUN --mount=type=cache,target=/root/.cache/go-build \ --mount=type=cache,target=/go/pkg/mod \ CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \ go build -trimpath -ldflags "\ -s -w \ -X github.com/tech/sendico/server/internal/appversion.Version=${APP_VERSION} \ -X github.com/tech/sendico/server/internal/appversion.Revision=${GIT_REV} \ -X github.com/tech/sendico/server/internal/appversion.Branch=${BUILD_BRANCH} \ -X github.com/tech/sendico/server/internal/appversion.BuildUser=${BUILD_USER} \ -X github.com/tech/sendico/server/internal/appversion.BuildDate=${BUILD_DATE}" \ -o /out/bff . FROM alpine:latest AS runtime RUN apk add --no-cache ca-certificates tzdata wget WORKDIR /app COPY api/server/config.yml /app/config.yml COPY api/server/assets /app/assets COPY api/server/env /app/env COPY api/pkg/auth/internal/casbin/models/auth.conf /app/env/permissions_model.conf COPY --from=build /out/bff /app/bff EXPOSE 8082 ENTRYPOINT ["/app/bff"] CMD ["--config.file", "/app/config.yml"]