FROM golang:1.17-alpine3.15 AS go_builder
RUN apk --no-cache add \
    build-base \
    imagemagick6 \
    imagemagick6-dev
WORKDIR /go/src/app
COPY go.* ./
ENV CGO_ENABLED=1
ENV CGO_CFLAGS_ALLOW=-Xpreprocessor
ENV GOPROXY=https://proxy.golang.org
RUN go mod download
COPY . ./
RUN go build -o app ./frontend

FROM node:alpine as asset_builder
RUN apk --no-cache add \
    build-base \
    python3
WORKDIR /app
COPY frontend/package* /app/
RUN npm ci
COPY frontend/assets /app/assets
RUN npm run build

FROM alpine:3.15
RUN apk --no-cache add imagemagick6
RUN addgroup -g 1000 -S app && \
    adduser -u 1000 -G app -S app
COPY --from=go_builder /go/src/app /
COPY frontend/templates /templates
COPY frontend/migrations /migrations
COPY --from=asset_builder /app/assets /assets
USER app
ENTRYPOINT ["/app"]