# syntax=docker/dockerfile:1
# Excel Converter Free — runtime-образ.
#
# База — ubuntu:24.04: glibc в образе
# совпадает с той, против которой собраны бинарники поставки. Именно поэтому
# образ работает и на старых дистрах (CentOS 8 и т.п.), где сам бинарник
# из поставки падает на GLIBC_2.3x.
#
# Сборка из КОРНЯ поставки (convplat-free/):
#   docker build -f docker/Dockerfile -t convplat-free .
# либо через docker/docker-compose.yml:
#   docker compose -f docker/docker-compose.yml up -d --build
FROM ubuntu:24.04

ENV DEBIAN_FRONTEND=noninteractive

# curl — для healthcheck.
RUN apt-get update && apt-get install -y --no-install-recommends         ca-certificates         curl     && rm -rf /var/lib/apt/lists/*

RUN groupadd -r ecp && useradd -r -g ecp -d /app -s /usr/sbin/nologin ecp

WORKDIR /app

COPY --chown=ecp:ecp bin/linux/ /app/bin/
COPY --chown=ecp:ecp config.yaml /app/config.yaml
COPY --chown=ecp:ecp config/ /app/config/

# /app должен быть записываемым для ecp: бинарник при старте создаёт
# рабочие каталоги (file_data, log, logs) — готовим их заранее.
RUN mkdir -p /app/file_data /app/log && chown -R ecp:ecp /app

# Динамическая загрузка libconvplat_core.so (соседний каталог).
ENV LD_LIBRARY_PATH=/app/bin

# Рабочие каталоги (temp_dir: ./file_data, db_path: ./log из config.yaml).
VOLUME ["/app/file_data", "/app/log"]

EXPOSE 11878

HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3     CMD curl -sf http://127.0.0.1:11878/health || exit 1

USER ecp
ENTRYPOINT ["/app/bin/convplat-free"]
