FROM debian:bookworm AS build
RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential cmake git ca-certificates zlib1g-dev \
    && rm -rf /var/lib/apt/lists/*
WORKDIR /app

# Кэшируемый слой: конфигурация + сборка зависимостей (uSockets, json).
# Заглушки вместо src/, чтобы cmake configure не падал на несуществующих
# исходниках — они не компилируются, т.к. просим собрать только usockets.
COPY CMakeLists.txt ./
RUN mkdir src && touch src/main.cpp src/Lobby.cpp src/Lobby.hpp
RUN cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build --target usockets -j"$(nproc)"

# Реальный код поверх уже собранных зависимостей — пересобирается за секунды.
COPY src ./src
RUN cmake --build build --target gameserver -j"$(nproc)"

FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends zlib1g \
    && rm -rf /var/lib/apt/lists/*
COPY --from=build /app/build/gameserver /usr/local/bin/gameserver
EXPOSE 9001
CMD ["gameserver"]
