FROM debian:bullseye AS builder

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        build-essential \
        ca-certificates \
        cmake \
        git \
        libopencv-dev \
        pkg-config \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /source
COPY src/ ./src/
COPY x86/CMakeLists.txt ./x86/CMakeLists.txt
COPY x86/src/ ./x86/src/
COPY x86/tests/ ./x86/tests/
COPY x86/web/ ./x86/web/

RUN cmake -S /source/x86 -B /build \
        -DCMAKE_BUILD_TYPE=Release \
        -DBUILD_TESTING=ON \
    && cmake --build /build --parallel 4 \
    && cd /build \
    && ctest --output-on-failure

FROM debian:bullseye-slim AS runtime

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        ca-certificates \
        curl \
        libopencv-calib3d4.5 \
        libopencv-core4.5 \
        libopencv-imgcodecs4.5 \
        libopencv-imgproc4.5 \
        libopencv-videoio4.5 \
    && rm -rf /var/lib/apt/lists/* \
    && mkdir -p /usr/share/opendartboard-x86/web /var/lib/opendartboard

COPY --from=builder /build/bin/opendartboard-x86 /usr/local/bin/opendartboard-x86
COPY x86/web/ /usr/share/opendartboard-x86/web/
COPY LICENSE /usr/share/doc/opendartboard-x86/LICENSE

EXPOSE 13520
VOLUME ["/var/lib/opendartboard"]

HEALTHCHECK --interval=15s --timeout=3s --start-period=5s --retries=3 \
    CMD curl --fail --silent http://127.0.0.1:13520/api/health >/dev/null || exit 1

ENTRYPOINT ["/usr/local/bin/opendartboard-x86"]
CMD ["--host", "0.0.0.0", "--port", "13520", "--web-root", "/usr/share/opendartboard-x86/web", "--data-dir", "/var/lib/opendartboard"]
