# ==================================================================== # Dockerfile for Hugging Face Space (Docker runtime) # Nginx (7860) -> Uvicorn (8000), fix: nginx not found # ORIGINAL VERSION - RELIES ON HF SECRETS # ==================================================================== FROM python:3.10-slim ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 # Install Nginx + tini (as init) RUN apt-get update && apt-get install -y --no-install-recommends \ nginx ca-certificates bash curl tini \ && rm -rf /var/lib/apt/lists/* # 🔧 关键修正:把 /usr/sbin 加进 PATH,避免 "nginx: not found" ENV PATH="/usr/sbin:/sbin:${PATH}" WORKDIR /app # Python deps from upstream repo COPY requirements.txt . RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir -r requirements.txt # App code (upstream files) — we don't modify them COPY . . # Non-root user & perms for Nginx runtime paths RUN useradd --create-home --shell /bin/bash appuser && \ mkdir -p /var/lib/nginx /var/cache/nginx /run/nginx /tmp/nginx && \ chown -R appuser:appuser /app /var/lib/nginx /var/cache/nginx /var/log/nginx /run/nginx /tmp/nginx # Use your provided nginx.conf (listens 7860, logs/pid in /tmp, user appuser) COPY nginx.conf /etc/nginx/nginx.conf # External port ENV PORT=7860 EXPOSE 7860 USER appuser ENTRYPOINT ["/usr/bin/tini","--"] # 🔧 关键修正:使用绝对路径启动 Nginx CMD bash -lc "\ uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4 & \ exec /usr/sbin/nginx -g 'daemon off;' \ "