FROM condaforge/miniforge3:latest

ENV DEBIAN_FRONTEND=noninteractive
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
ENV CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1

# Force all conda/mamba traffic to Tsinghua mirror
RUN printf '\
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda\n\
channels:\n\
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge\n\
  - nodefaults\n\
custom_channels:\n\
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud\n\
show_channel_urls: true\n\
' > /opt/conda/.condarc

# System dependencies for rendering, fonts, and native libs
RUN apt-get update && apt-get install -y --no-install-recommends \
    libcairo2-dev \
    libxt-dev \
    libfontconfig1-dev \
    libfreetype6-dev \
    libharfbuzz-dev \
    libfribidi-dev \
    libpng-dev \
    libtiff-dev \
    libjpeg-dev \
    libhdf5-dev \
    pkg-config \
    fontconfig \
    fonts-liberation \
    fonts-dejavu-core \
    fonts-noto-cjk \
    && rm -rf /var/lib/apt/lists/* \
    && fc-cache -fv

# Custom fonts (Arial, Noto Sans SC)
COPY fonts/ /usr/share/fonts/truetype/custom/
RUN fc-cache -fv

RUN mkdir -p /app/work

# Create conda environments (one RUN per env for caching & progress visibility)
COPY envs/default.yaml /tmp/envs/default.yaml
RUN mamba env create --override-channels -f /tmp/envs/default.yaml -y

COPY envs/plot.yaml /tmp/envs/plot.yaml
RUN mamba env create --override-channels -f /tmp/envs/plot.yaml -y

WORKDIR /app/work
