FROM golang:alpine as go_builder RUN apk add --no-cache musl-dev WORKDIR /go/src/app COPY go.* ./ RUN go mod download COPY *.go ./ RUN CGO_ENABLED=false go build -o app . 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 package* /app/ RUN npm ci COPY assets /app/assets RUN npm run build FROM alpine:3.15 WORKDIR / 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 templates /templates COPY --from=asset_builder /app/assets / USER app ENTRYPOINT ["/app"]