Spaces:
Sleeping
Sleeping

Update Dockerfile to include test_permissions.py and enhance startup script for environment verification
442515d
FROM python:3.9-slim | |
WORKDIR /app | |
# Set environment variables to prevent root filesystem access | |
ENV TEMP_DIR=/tmp/docling_temp | |
ENV HOME=/tmp/docling_temp | |
ENV USERPROFILE=/tmp/docling_temp | |
ENV TMPDIR=/tmp/docling_temp | |
ENV TEMP=/tmp/docling_temp | |
ENV TMP=/tmp/docling_temp | |
# Hugging Face Hub configuration - CRITICAL for preventing /.cache access | |
ENV HF_HOME=/tmp/docling_temp/huggingface | |
ENV HF_CACHE_HOME=/tmp/docling_temp/huggingface_cache | |
ENV HF_HUB_CACHE=/tmp/docling_temp/huggingface_cache | |
ENV TRANSFORMERS_CACHE=/tmp/docling_temp/transformers_cache | |
ENV HF_DATASETS_CACHE=/tmp/docling_temp/datasets_cache | |
ENV DIFFUSERS_CACHE=/tmp/docling_temp/diffusers_cache | |
ENV ACCELERATE_CACHE=/tmp/docling_temp/accelerate_cache | |
# Additional Hugging Face specific variables | |
ENV HF_HUB_DISABLE_TELEMETRY=1 | |
ENV HF_HUB_DISABLE_IMPLICIT_TOKEN=1 | |
ENV HF_HUB_OFFLINE=0 | |
# Other ML libraries | |
ENV TORCH_HOME=/tmp/docling_temp/torch | |
ENV TENSORFLOW_HOME=/tmp/docling_temp/tensorflow | |
ENV KERAS_HOME=/tmp/docling_temp/keras | |
# XDG directories | |
ENV XDG_CACHE_HOME=/tmp/docling_temp/cache | |
ENV XDG_CONFIG_HOME=/tmp/docling_temp/config | |
ENV XDG_DATA_HOME=/tmp/docling_temp/data | |
# EasyOCR configuration | |
ENV EASYOCR_MODULE_PATH=/tmp/docling_temp/easyocr_models | |
# Additional cache directories | |
ENV CACHE_DIR=/tmp/docling_temp/cache | |
ENV MODEL_CACHE_DIR=/tmp/docling_temp/models | |
ENV CACHE=/tmp/docling_temp/cache | |
ENV MODELS=/tmp/docling_temp/models | |
ENV DATA=/tmp/docling_temp/data | |
ENV CONFIG=/tmp/docling_temp/config | |
# Python path | |
ENV PYTHONPATH=/tmp/docling_temp | |
RUN apt-get update && apt-get install -y \ | |
build-essential \ | |
curl \ | |
software-properties-common \ | |
git \ | |
&& rm -rf /var/lib/apt/lists/* | |
# Create necessary directories with proper permissions | |
RUN mkdir -p /app/.streamlit /tmp/docling_temp /tmp/easyocr_models /tmp/cache /tmp/config /tmp/data /tmp/huggingface /tmp/huggingface_cache /tmp/transformers_cache /tmp/datasets_cache /tmp/torch /tmp/tensorflow /tmp/keras /tmp/accelerate_cache /tmp/diffusers_cache /tmp/models && \ | |
chmod 755 /app/.streamlit && \ | |
chmod 777 /tmp/docling_temp && \ | |
chmod 777 /tmp/easyocr_models && \ | |
chmod 777 /tmp/cache && \ | |
chmod 777 /tmp/config && \ | |
chmod 777 /tmp/data && \ | |
chmod 777 /tmp/huggingface && \ | |
chmod 777 /tmp/huggingface_cache && \ | |
chmod 777 /tmp/transformers_cache && \ | |
chmod 777 /tmp/datasets_cache && \ | |
chmod 777 /tmp/torch && \ | |
chmod 777 /tmp/tensorflow && \ | |
chmod 777 /tmp/keras && \ | |
chmod 777 /tmp/accelerate_cache && \ | |
chmod 777 /tmp/diffusers_cache && \ | |
chmod 777 /tmp/models | |
COPY requirements.txt ./ | |
COPY pyproject.toml ./ | |
COPY src/ ./src/ | |
COPY test_permissions.py ./ | |
COPY README.md ./ | |
# Create Streamlit config directly in Dockerfile to avoid copy issues | |
RUN echo '[global]' > /app/.streamlit/config.toml && \ | |
echo 'developmentMode = false' >> /app/.streamlit/config.toml && \ | |
echo '' >> /app/.streamlit/config.toml && \ | |
echo '[server]' >> /app/.streamlit/config.toml && \ | |
echo 'fileWatcherType = "none"' >> /app/.streamlit/config.toml && \ | |
echo 'headless = true' >> /app/.streamlit/config.toml && \ | |
echo 'enableCORS = false' >> /app/.streamlit/config.toml && \ | |
echo 'enableXsrfProtection = false' >> /app/.streamlit/config.toml && \ | |
echo '' >> /app/.streamlit/config.toml && \ | |
echo '[browser]' >> /app/.streamlit/config.toml && \ | |
echo 'gatherUsageStats = false' >> /app/.streamlit/config.toml && \ | |
echo 'serverAddress = "0.0.0.0"' >> /app/.streamlit/config.toml && \ | |
echo 'serverPort = 8501' >> /app/.streamlit/config.toml && \ | |
echo '' >> /app/.streamlit/config.toml && \ | |
echo '[theme]' >> /app/.streamlit/config.toml && \ | |
echo 'primaryColor = "#1f77b4"' >> /app/.streamlit/config.toml && \ | |
echo 'backgroundColor = "#ffffff"' >> /app/.streamlit/config.toml && \ | |
echo 'secondaryBackgroundColor = "#f0f2f6"' >> /app/.streamlit/config.toml && \ | |
echo 'textColor = "#262730"' >> /app/.streamlit/config.toml | |
RUN pip3 install -r requirements.txt | |
EXPOSE 8501 | |
HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health | |
# Create a startup script to ensure environment variables are set | |
RUN echo '#!/bin/bash' > /app/start.sh && \ | |
echo 'export TEMP_DIR=/tmp/docling_temp' >> /app/start.sh && \ | |
echo 'export HOME=/tmp/docling_temp' >> /app/start.sh && \ | |
echo 'export USERPROFILE=/tmp/docling_temp' >> /app/start.sh && \ | |
echo 'export TMPDIR=/tmp/docling_temp' >> /app/start.sh && \ | |
echo 'export TEMP=/tmp/docling_temp' >> /app/start.sh && \ | |
echo 'export TMP=/tmp/docling_temp' >> /app/start.sh && \ | |
echo 'export HF_HOME=/tmp/docling_temp/huggingface' >> /app/start.sh && \ | |
echo 'export HF_CACHE_HOME=/tmp/docling_temp/huggingface_cache' >> /app/start.sh && \ | |
echo 'export HF_HUB_CACHE=/tmp/docling_temp/huggingface_cache' >> /app/start.sh && \ | |
echo 'export TRANSFORMERS_CACHE=/tmp/docling_temp/transformers_cache' >> /app/start.sh && \ | |
echo 'export HF_DATASETS_CACHE=/tmp/docling_temp/datasets_cache' >> /app/start.sh && \ | |
echo 'export DIFFUSERS_CACHE=/tmp/docling_temp/diffusers_cache' >> /app/start.sh && \ | |
echo 'export ACCELERATE_CACHE=/tmp/docling_temp/accelerate_cache' >> /app/start.sh && \ | |
echo 'export HF_HUB_DISABLE_TELEMETRY=1' >> /app/start.sh && \ | |
echo 'export HF_HUB_DISABLE_IMPLICIT_TOKEN=1' >> /app/start.sh && \ | |
echo 'export HF_HUB_OFFLINE=0' >> /app/start.sh && \ | |
echo 'export TORCH_HOME=/tmp/docling_temp/torch' >> /app/start.sh && \ | |
echo 'export TENSORFLOW_HOME=/tmp/docling_temp/tensorflow' >> /app/start.sh && \ | |
echo 'export KERAS_HOME=/tmp/docling_temp/keras' >> /app/start.sh && \ | |
echo 'export XDG_CACHE_HOME=/tmp/docling_temp/cache' >> /app/start.sh && \ | |
echo 'export XDG_CONFIG_HOME=/tmp/docling_temp/config' >> /app/start.sh && \ | |
echo 'export XDG_DATA_HOME=/tmp/docling_temp/data' >> /app/start.sh && \ | |
echo 'export EASYOCR_MODULE_PATH=/tmp/docling_temp/easyocr_models' >> /app/start.sh && \ | |
echo 'export CACHE_DIR=/tmp/docling_temp/cache' >> /app/start.sh && \ | |
echo 'export MODEL_CACHE_DIR=/tmp/docling_temp/models' >> /app/start.sh && \ | |
echo 'export CACHE=/tmp/docling_temp/cache' >> /app/start.sh && \ | |
echo 'export MODELS=/tmp/docling_temp/models' >> /app/start.sh && \ | |
echo 'export DATA=/tmp/docling_temp/data' >> /app/start.sh && \ | |
echo 'export CONFIG=/tmp/docling_temp/config' >> /app/start.sh && \ | |
echo 'export PYTHONPATH=/tmp/docling_temp' >> /app/start.sh && \ | |
echo 'echo "Environment variables set for Hugging Face Hub cache directories"' >> /app/start.sh && \ | |
echo 'echo "HF_HUB_CACHE: $HF_HUB_CACHE"' >> /app/start.sh && \ | |
echo 'echo "HF_CACHE_HOME: $HF_CACHE_HOME"' >> /app/start.sh && \ | |
echo 'echo "TEMP_DIR: $TEMP_DIR"' >> /app/start.sh && \ | |
echo 'echo "Running environment test..."' >> /app/start.sh && \ | |
echo 'python test_permissions.py' >> /app/start.sh && \ | |
echo 'if [ $? -eq 0 ]; then' >> /app/start.sh && \ | |
echo ' echo "Environment test passed, starting Streamlit app..."' >> /app/start.sh && \ | |
echo ' exec streamlit run src/streamlit_app.py --server.port=8501 --server.address=0.0.0.0' >> /app/start.sh && \ | |
echo 'else' >> /app/start.sh && \ | |
echo ' echo "Environment test failed, exiting..."' >> /app/start.sh && \ | |
echo ' exit 1' >> /app/start.sh && \ | |
echo 'fi' >> /app/start.sh && \ | |
chmod +x /app/start.sh | |
ENTRYPOINT ["/app/start.sh"] |