FROM vllm/vllm-openai:latest ENV DEBIAN_FRONTEND=noninteractive ENV PYTHONUNBUFFERED=1 ENV MODEL_NAME=NM-dev/NuExtract3.4_4B-RL-400 ENV OPENAI_API_BASE=http://127.0.0.1:8000/v1 ENV OPENAI_API_KEY=EMPTY ENV GRADIO_SERVER_NAME=0.0.0.0 ENV GRADIO_SERVER_PORT=7860 ENV VLLM_PORT=8000 ENV MAX_MODEL_LEN=8192 ENV GPU_MEMORY_UTILIZATION=0.90 ENV NUEXTRACT_MAX_TOKENS=5000 ENV NUEXTRACT_EXAMPLE_DIR=/home/user/app/examples ENV NUEXTRACT_ASSETS_DIR=/home/user/app/assets ENV HF_HOME=/data/.cache/huggingface ENV TRANSFORMERS_CACHE=/data/.cache/huggingface ENV VLLM_CACHE_ROOT=/data/.cache/vllm RUN pip install --no-cache-dir \ gradio \ openai \ pillow RUN useradd -m -u 1000 user || true WORKDIR /home/user/app COPY --chown=user:user app.py /home/user/app/app.py COPY --chown=user:user start.sh /home/user/app/start.sh COPY --chown=user:user examples /home/user/app/examples COPY --chown=user:user assets /home/user/app/assets # Your app.py hardcodes /home/azureuser/assets, so mirror assets there RUN mkdir -p /home/azureuser/assets && \ cp -r /home/user/app/assets/* /home/azureuser/assets/ && \ chown -R user:user /home/user /home/azureuser || true && \ chmod +x /home/user/app/start.sh USER user EXPOSE 7860 CMD ["/home/user/app/start.sh"]