| 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"] |
|
|