# syntax=docker/dockerfile:1 FROM python:3.10-slim ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 \ GRADIO_SERVER_PORT=7860 \ GRADIO_SERVER_NAME=0.0.0.0 \ HOME=/home/user # 建立非 root 使用者(與 HF Spaces 一致) RUN useradd -m -u 1000 user # 基本系統套件與科學計算依賴 RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ libhdf5-dev \ libnetcdf-dev \ libopenblas-dev \ liblapack-dev \ git \ && rm -rf /var/lib/apt/lists/* # 切換到使用者目錄 WORKDIR $HOME/app # 只複製 requirements.txt 並安裝 COPY --chown=user:user requirements.txt . RUN pip install --upgrade pip && pip install -r requirements.txt # 切換到非 root 使用者 USER user EXPOSE 7860 # 預設執行命令(可被 docker run 覆蓋) CMD ["python", "app.py"]