FROM python:3.10-slim ENV PYTHONDONTWRITEBYTECODE 1 # ^ saves space by not writing .pyc files ENV PYTHONUNBUFFERED 1 # ^ ensures that the output from the Python app is sent straight to the terminal without being buffered -> real time monitoring ENV ENVIRONMENT=dev ENV FINRAG_WEAVIATE_API_KEY=$(cat /run/secrets/FINRAG_WEAVIATE_API_KEY) ENV FINRAG_WEAVIATE_ENDPOINT=$(cat /run/secrets/FINRAG_WEAVIATE_ENDPOINT ENV LLAMA_PARSE_API_KEY=$(cat /run/secrets/LLAMA_PARSE_API_KEY) ENV OPENAI_API_KEY=$(cat /run/secrets/OPENAI_API_KEY) COPY ./app /app WORKDIR /app RUN mkdir /data RUN pip install --no-cache-dir --upgrade -r requirements.txt # ^ no caching of the packages to save space # RUN python -c "import nltk; nltk.download('stopwords')" # ^ to fix runtime error, see https://github.com/run-llama/llama_index/issues/10681 RUN chmod -R 777 /usr/local/lib/python3.10/site-packages//llama_index/legacy/_static/nltk_cache CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]