notion2api / Dockerfile
meyosaj406's picture
Update Dockerfile
3090e8d verified
# ====================================================================
# 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;' \
"