diff --git a/docker/Dockerfile b/docker/Dockerfile index fde1a76..0e51474 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -51,10 +51,12 @@ FROM nvidia/cuda:12.4.1-runtime-ubuntu22.04 AS runtime # Ubuntu 22.04 jammy: package names иные чем noble (libpng16-16 без t64). # libcudart12 уже в runtime image; здесь только наши user-space deps. +# netcat-openbsd — для healthcheck'а через ZMQ ping (см. HEALTHCHECK ниже). RUN apt-get update && apt-get install -y --no-install-recommends \ libpng16-16 libfreetype6 \ libzmq5 libjson-c5 libmosquitto1 \ fonts-dejavu-core \ + netcat-openbsd \ && rm -rf /var/lib/apt/lists/* # Бинари + libcuframes (статически слинкована не вся, libcuframes shared нужен). @@ -68,5 +70,14 @@ COPY --from=builder /src/build/src/libcuframes_composer.so.0.1.0 \ # NVIDIA_DRIVER_CAPABILITIES должен включать 'video' для NVENC через libnvidia-encode. ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility,video +# Healthcheck — проверяет что ZMQ control plane port слушается. +# Полная functional проверка через ZMQ ping требует ZMTP handshake (plain nc +# не подходит — это binary wire protocol с greeting), поэтому здесь только +# liveness через TCP probe. Composer thread'ы (compose/encode) могут зависнуть +# без падения main process'а, но external monitor (MQTT health uptime_s, +# Prometheus в Phase 7) дополнит контроль over time. +HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \ + CMD nc -z 127.0.0.1 5599 || exit 1 + ENTRYPOINT ["/usr/local/bin/grid_record"] CMD ["--help"]