Spaces:
Running
Running
FROM node:18 as client-build | |
WORKDIR /app | |
COPY client/package*.json ./ | |
RUN npm install | |
COPY client/ ./ | |
RUN npm run build | |
FROM python:3.9-slim | |
WORKDIR /app | |
# Create non-root user | |
RUN useradd -m -u 1000 user | |
# Install system dependencies and poetry | |
RUN apt-get update && apt-get install -y \ | |
netcat-openbsd \ | |
git \ | |
&& rm -rf /var/lib/apt/lists/* \ | |
&& pip install poetry | |
# Copy and install Python dependencies | |
COPY server/pyproject.toml server/poetry.lock* ./ | |
RUN poetry config virtualenvs.create false \ | |
&& poetry install --no-interaction --no-ansi --only main --no-root | |
# Copy server code | |
COPY server/ ./server/ | |
# Copy client build | |
COPY --from=client-build /app/dist ./static | |
# Environment variables | |
ENV API_HOST=0.0.0.0 \ | |
API_PORT=7860 \ | |
HF_HOME=/app/cache/huggingface | |
# Create cache directories and set permissions | |
RUN mkdir -p /app/cache/huggingface && chown -R user:user /app/cache | |
# Switch to non-root user | |
USER user | |
EXPOSE 7860 | |
# Start the server | |
CMD ["python", "-m", "uvicorn", "server.server:app", "--host", "0.0.0.0", "--port", "7860"] |