# syntax=docker/dockerfile:1.7
FROM debian:bullseye-slim AS ifind-libidn

RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends libidn11 && \
    mkdir -p /opt/ifind-libs && \
    cp /usr/lib/*/libidn.so.11* /opt/ifind-libs/ && \
    rm -rf /var/lib/apt/lists/*

FROM python:3.11-slim

ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    LD_LIBRARY_PATH=/usr/local/lib/python3.11/site-packages/iFinDAPI/Linux/bin64

WORKDIR /app

COPY --from=ifind-libidn /opt/ifind-libs/ /usr/local/lib/

RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
      libgcc-s1 \
      libncurses6 \
      libstdc++6 \
      zlib1g && \
    ldconfig && \
    rm -rf /var/lib/apt/lists/*

COPY deploy/runtime-requirements.txt ./deploy/runtime-requirements.txt
COPY src/ashare_market/installers/insight_sdk.py ./deploy/install-insight-sdk.py

RUN --mount=type=cache,target=/root/.cache/pip \
    python -m pip install -r deploy/runtime-requirements.txt && \
    python deploy/install-insight-sdk.py

COPY pyproject.toml ./
COPY README.md MANIFEST.in ./
COPY src ./src
COPY deploy ./deploy
COPY docs ./docs

RUN --mount=type=cache,target=/root/.cache/pip \
    python -m pip install --no-build-isolation --no-deps .

RUN python -m ashare_market.providers.ifind_native

RUN useradd --create-home --uid 10001 ashare

USER ashare

EXPOSE 8020

CMD ["ashare-market", "serve", "--host", "0.0.0.0", "--port", "8020"]
