File size: 1,536 Bytes
6bf4962 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | 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"]
|