# syntax=docker/dockerfile:1.7

FROM golang:1.22-bookworm AS builder
WORKDIR /src
COPY go.mod ./
COPY cmd ./cmd
RUN --mount=type=cache,target=/root/.cache/go-build \
    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags='-s -w' -o /out/uci-bridge ./cmd/uci-bridge

FROM nvidia/cuda:12.4.1-runtime-ubuntu22.04

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
      ca-certificates \
      curl \
      gnupg \
      iproute2 \
      tini \
    && mkdir -p /usr/share/keyrings \
    && curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.noarmor.gpg | tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null \
    && curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.tailscale-keyring.list | tee /etc/apt/sources.list.d/tailscale.list \
    && apt-get update && apt-get install -y --no-install-recommends tailscale \
    && rm -rf /var/lib/apt/lists/*

# Optional: install lc0 from a direct binary URL during build.
# If omitted, mount lc0 into /usr/local/bin/lc0 at runtime.
ARG LC0_DOWNLOAD_URL=""
RUN if [ -n "$LC0_DOWNLOAD_URL" ]; then \
      curl -fsSL "$LC0_DOWNLOAD_URL" -o /usr/local/bin/lc0 && chmod +x /usr/local/bin/lc0; \
    fi

COPY --from=builder /out/uci-bridge /usr/local/bin/uci-bridge
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh && mkdir -p /data

EXPOSE 5555
ENTRYPOINT ["/usr/bin/tini", "--", "/entrypoint.sh"]
