Spaces:
Runtime error
Runtime error
| # Start with PostgreSQL image with pgvector | |
| FROM pgvector/pgvector:pg16 | |
| # Set environment variables | |
| ENV POSTGRES_USER=db-user \ | |
| POSTGRES_PASSWORD=password \ | |
| POSTGRES_DB=ai_assistant \ | |
| POSTGRES_INITDB_ARGS=--data-checksums \ | |
| PGDATA=/var/lib/postgresql/data/pgdata \ | |
| OPENAI_API_KEY="dumy-key" \ | |
| PGUSER=db-user \ | |
| PGPASSWORD=password \ | |
| PGDATABASE=ai_assistant \ | |
| PGHOST=localhost \ | |
| PGPORT=5432 \ | |
| API_AUTH_TOKEN=secret \ | |
| JWT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2gzhmJ9TDanEzWdP1WG+\n0Ecwbe7f3bv6e5UUpvcT5q68IQJKP47AQdBAnSlFVi4X9SaurbWoXdS6jpmPpk24\nQvitzLNFphHdwjFBelTAOa6taZrSusoFvrtK9x5xsW4zzt/bkpUraNx82Z8MwLwr\nt6HlY7dgO9+xBAabj4t1d2t+0HS8O/ed3CB6T2lj6S8AbLDSEFc9ScO6Uc1XJlSo\nrgyJJSPCpNhSq3AubEZ1wMS1iEtgAzTPRDsQv50qWIbn634HLWxTP/UH6YNJBwzt\n3O6q29kTtjXlMGXCvin37PyX4Jy1IiPFwJm45aWJGKSfVGMDojTJbuUtM+8P9Rrn\nAwIDAQAB\n-----END PUBLIC KEY-----" \ | |
| JWT_ALGORITHM=RS256 \ | |
| DASHBOARD_USERNAME=dashboard \ | |
| DASHBOARD_PASSWORD=secret \ | |
| SECRET_KEY_BASE=secret-key-base | |
| # Install required packages including nginx | |
| RUN apt-get update && \ | |
| apt-get install -y nodejs npm python3-venv python3-pip wget curl unzip nginx-light procps && \ | |
| mkdir -p /tmp/llamafile && \ | |
| cd /tmp/llamafile && \ | |
| wget --no-check-certificate https://github.com/Mozilla-Ocho/llamafile/releases/download/0.8.17/llamafile-0.8.17.zip && \ | |
| unzip llamafile-0.8.17.zip && \ | |
| cp llamafile-0.8.17/bin/llamafiler /usr/local/bin/ && \ | |
| chmod +x /usr/local/bin/llamafiler && \ | |
| rm -rf /tmp/llamafile && \ | |
| # Create all required nginx directories and files with correct ownership and permissions | |
| mkdir -p /var/run/nginx && \ | |
| mkdir -p /var/lib/nginx/body && \ | |
| mkdir -p /var/lib/nginx/proxy && \ | |
| mkdir -p /var/lib/nginx/fastcgi && \ | |
| mkdir -p /var/lib/nginx/uwsgi && \ | |
| mkdir -p /var/lib/nginx/scgi && \ | |
| mkdir -p /var/log/nginx && \ | |
| touch /var/log/nginx/access.log && \ | |
| touch /var/log/nginx/error.log && \ | |
| chmod 755 /var/lib && \ | |
| chmod 755 /var/log && \ | |
| chmod 755 /var/run && \ | |
| chown -R postgres:postgres /var/run/nginx /var/log/nginx /var/lib/nginx && \ | |
| chmod -R 755 /var/lib/nginx /var/log/nginx && \ | |
| chmod 777 /var/run/nginx && \ | |
| chmod 666 /var/log/nginx/access.log && \ | |
| chmod 666 /var/log/nginx/error.log | |
| # Create and activate virtual environment | |
| RUN python3 -m venv /venv | |
| ENV PATH="/venv/bin:$PATH" | |
| # Install Flask in the virtual environment | |
| RUN /venv/bin/pip install flask | |
| # Copy the Flask app | |
| COPY app.py /app.py | |
| COPY service-config.yml /service-config.yml | |
| # Create a healthcheck script | |
| COPY healthcheck.sh /usr/local/bin/healthcheck.sh | |
| RUN chmod +x /usr/local/bin/healthcheck.sh | |
| # Pull and extract the AI assistant image | |
| COPY --from=pspdfkit/ai-assistant:nightly / /ai-assistant | |
| COPY service-config.yml /ai-assistant/base/config/service-config.yml | |
| # Copy and prepare start script | |
| COPY start-services.sh /start-services.sh | |
| RUN chmod +x /start-services.sh | |
| # Copy Nginx configuration | |
| COPY nginx.conf /etc/nginx/nginx.conf | |
| # Create base directory and download models during build | |
| RUN mkdir -p /base && \ | |
| wget -q https://huggingface.co/bartowski/gemma-2-2b-it-GGUF/resolve/main/gemma-2-2b-it-Q4_K_M.gguf -O /base/gemma-2b.gguf && \ | |
| wget -q https://huggingface.co/leliuga/all-MiniLM-L6-v2-GGUF/resolve/main/all-MiniLM-L6-v2.F16.gguf -O /base/embeddings.gguf && \ | |
| chown -R postgres:postgres /base | |
| # Expose ports | |
| EXPOSE 5432 7860 4000 8080 8081 8082 | |
| # Add a healthcheck | |
| HEALTHCHECK --interval=3s --timeout=3s --retries=10 \ | |
| CMD ["healthcheck.sh"] | |
| USER postgres | |
| # Start PostgreSQL, Flask, and AI assistant | |
| CMD ["sh", "-c", "/venv/bin/flask run --host=0.0.0.0 --port=7860 & docker-entrypoint.sh postgres & /start-services.sh"] | |