Spaces:
Running
Running
| # Start with a standard, lightweight Python base image | |
| FROM python:3.10-slim | |
| # Create non-root user with explicit UID | |
| RUN adduser --disabled-password --gecos '' --uid 1000 appuser | |
| # Set environment variables for Hugging Face cache | |
| ENV HF_HOME=/data/huggingface_cache | |
| #ENV TRANSFORMERS_CACHE=/data/huggingface_cache | |
| #ENV TORCH_HOME=/data/huggingface_cache | |
| # Create persistent data directories | |
| RUN mkdir -p /data/user_models_data \ | |
| && mkdir -p /data/huggingface_cache | |
| # Set the working directory | |
| WORKDIR /code | |
| # Copy requirements first to leverage Docker cache | |
| COPY ./requirements.txt /code/requirements.txt | |
| # Install dependencies | |
| RUN pip install --upgrade pip \ | |
| && pip install --no-cache-dir --upgrade -r /code/requirements.txt | |
| # Pre-download the sentence-transformers model as root | |
| #RUN python -c "from sentence_transformers import SentenceTransformer; SentenceTransformer('all-MiniLM-L6-v2')" | |
| # Copy all individual files | |
| COPY ./utils.py /code/utils.py | |
| COPY ./main.py /code/main.py | |
| COPY ./neura_self_hosted.py /code/neura_self_hosted.py | |
| COPY ./model_info.py /code/model_info.py | |
| COPY ./maintenance_control.py /code/maintenance_control.py | |
| COPY ./usage_logger.py /code/usage_logger.py | |
| COPY ./admin_panel.py /code/admin_panel.py | |
| COPY ./crypto_payment.py /code/crypto_payment.py | |
| COPY ./ai_ads.py /code/ai_ads.py | |
| COPY ./neuroprompt_deep.py /code/neuroprompt_deep.py | |
| # Copy user models data | |
| COPY ./user_models_data /data/user_models_data | |
| COPY ./static /data/static | |
| # Set proper ownership for all directories | |
| RUN chown -R appuser:appuser /data /code \ | |
| && chmod -R 775 /data | |
| # Fix cache ownership after model download | |
| RUN chown -R appuser:appuser /data/huggingface_cache | |
| # Volume to make learned data persistent | |
| #VOLUME /data/user_models_data | |
| # Switch to non-root user | |
| USER appuser | |
| # Expose the port used by Uvicorn | |
| EXPOSE 7860 | |
| # Start the app | |
| # This command activates your new AI | |
| #uvicorn neura_self_hosted:app --reload | |
| #CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"] | |
| # Change the CMD to: | |
| CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860", "--workers", "1", "--timeout-keep-alive", "2000"] |