ARG DS2API_REF=main FROM golang:1.26 AS source RUN apt-get update \ && apt-get install -y --no-install-recommends git ca-certificates \ && rm -rf /var/lib/apt/lists/* WORKDIR /src ARG DS2API_REF RUN git clone --depth 1 --branch "${DS2API_REF}" https://github.com/CJackHwang/ds2api.git . FROM node:24 AS webui-builder WORKDIR /app/webui COPY --from=source /src/webui/package.json /src/webui/package-lock.json ./ RUN npm ci COPY --from=source /src/webui ./ COPY --from=source /src/config.example.json /app/config.example.json RUN npm run build FROM golang:1.26 AS go-builder WORKDIR /app COPY --from=source /src/go.mod /src/go.sum* ./ RUN go mod download COPY --from=source /src ./ RUN set -eux; \ BUILD_VERSION_RESOLVED=""; \ if [ -f VERSION ]; then BUILD_VERSION_RESOLVED="$(cat VERSION | tr -d '[:space:]')"; fi; \ CGO_ENABLED=0 go build -buildvcs=false \ -ldflags="-s -w -X ds2api/internal/version.BuildVersion=${BUILD_VERSION_RESOLVED}" \ -o /out/ds2api ./cmd/ds2api FROM debian:bookworm-slim WORKDIR /app RUN apt-get update \ && apt-get install -y --no-install-recommends ca-certificates \ && rm -rf /var/lib/apt/lists/* \ && mkdir -p /app/data /app/static \ && chmod -R 777 /app COPY --from=go-builder /out/ds2api /usr/local/bin/ds2api COPY --from=go-builder /app/config.example.json /app/config.example.json COPY --from=webui-builder /app/static/admin /app/static/admin ENV PORT=7860 ENV DS2API_CONFIG_PATH=/app/data/config.json EXPOSE 7860 CMD ["/usr/local/bin/ds2api"]