FROM alpine:3.24

ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    PIP_DISABLE_PIP_VERSION_CHECK=1 \
    PIP_NO_CACHE_DIR=1 \
    RBCS_HOST=0.0.0.0 \
    RBCS_PORT=8080 \
    RBCS_MEMCACHE_HOST=memcached \
    RBCS_MEMCACHE_PORT=11211

RUN apk add --no-cache python3

WORKDIR /opt/kaya-rbcs

COPY requirements.txt ./
RUN python3 -m venv /opt/venv \
    && /opt/venv/bin/pip install -r requirements.txt

COPY pyproject.toml README.md ./
COPY src ./src
RUN /opt/venv/bin/pip install --no-deps .

RUN addgroup -S rbcs \
    && adduser -S -G rbcs rbcs \
    && chown -R rbcs:rbcs /opt/kaya-rbcs /opt/venv

ENV PATH="/opt/venv/bin:${PATH}"

USER rbcs

EXPOSE 8080

HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
    CMD python3 -c "import socket, os; socket.create_connection(('127.0.0.1', int(os.environ['RBCS_PORT'])), timeout=3).close()"

ENTRYPOINT ["rbcs-server"]
