FROM node:24-alpine AS frontend_dependencies RUN mkdir -p /app WORKDIR /app ADD static/app/package.json . ADD static/app/yarn.lock . RUN yarn install --frozen-lockfile FROM frontend_dependencies AS frontend_build ADD static/app . RUN yarn build FROM golang:1.26-alpine AS backend_dependencies RUN apk add git make RUN mkdir -p /app WORKDIR /app ADD go.mod . ADD go.sum . RUN go mod download FROM backend_dependencies AS backend_build ADD . . RUN rm -rf static/app/dist COPY --from=frontend_build /app/dist /app/static/app/dist RUN make build FROM alpine:latest AS final FROM final EXPOSE 8000 EXPOSE 9000 COPY --from=backend_build /app/bin/app /app CMD ["/app"]