FROM golang:1.17-alpine3.15 AS go_builder RUN apk --no-cache add \ --virtual .build-deps \ alpine-sdk \ cmake \ sudo \ libssh2 libssh2-dev \ git \ dep \ bash \ curl \ imagemagick \ imagemagick-dev WORKDIR /go/src/app COPY go.* ./ RUN go mod download COPY . ./ RUN go build -o app ./frontend FROM node:alpine as asset_builder RUN apk --no-cache add \ --virtual .build-deps \ alpine-sdk \ cmake \ libssh2 libssh2-dev \ git \ dep \ bash \ curl \ 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 imagemagick RUN addgroup -g 1000 -S app && \ adduser -u 1000 -G app -S app COPY --from=go_builder /go/src/app/app / COPY frontend/templates /templates COPY --from=asset_builder /app/assets /assets USER app ENTRYPOINT ["/app"]