FROM golang:1.25.6 AS gobuilder WORKDIR /opt/app-root COPY Makefile .tool-versions go.mod go.sum ./ RUN --mount=type=tmpfs,target=/tmp \ --mount=type=cache,target=/go/pkg/mod,id=calculate-negative-points-go1256-mod-cache \ --mount=type=cache,target=/root/.cache/go-build,id=calculate-negative-points-go1256-build-cache \ make mod COPY . /opt/app-root/ RUN --mount=type=tmpfs,target=/tmp \ --mount=type=cache,target=/go/pkg/mod,id=calculate-negative-points-go1256-mod-cache \ --mount=type=cache,target=/root/.cache/go-build,id=calculate-negative-points-go1256-build-cache \ CGO_ENABLED="0" BINDIR="/usr/local/bin" make clean; CGO_ENABLED="0" BINDIR="/usr/local/bin" make build FROM oven/bun:1.3.8 AS bunbuilder ENV NODE_ENV="production" COPY . /opt/app-root WORKDIR /opt/app-root/frontend RUN --mount=type=tmpfs,target=/tmp --mount=type=tmpfs,target=/var/log \ --mount=type=cache,target=/usr/local/share/.cache/yarn,id=calculate-negative-points-bun138-build-share-yarn-cache \ --mount=type=cache,target=/opt/app-root/frontend/node_modules,id=calculate-negative-points-bun138-build-app-node-modules \ bun install; bunx --bun vite build FROM golang:1.25.6 AS final WORKDIR $NON_ROOT_USER_HOME COPY --from=bunbuilder /opt/app-root/public /opt/app-root/public COPY --from=gobuilder /usr/local/bin/calculate_negative_points /usr/local/bin/calculate_negative_points COPY --from=gobuilder /opt/app-root/internal/views /opt/app-root/views COPY config/ /opt/app-root/config ENV TZ=America/Detroit EXPOSE 3000 CMD ["/usr/local/bin/calculate_negative_points", "--listen", "0.0.0.0:3000"]