curvedarch / Dockerfile
jpata's picture
Add BLAS and LAPACK dependencies for cyipopt build
bc8a7a5
Raw
History Blame Contribute Delete
1.76 kB
# Use Python 3.10 slim image (matching project's local/specified version)
FROM python:3.10-slim-bookworm
# Set environment variables
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
STREAMLIT_SERVER_PORT=7860 \
STREAMLIT_SERVER_ADDRESS=0.0.0.0 \
# VTK/OCP off-screen rendering
VTK_DEFAULT_OPENGL_WINDOW=EGL \
VTK_EGL_DEVICE_INDEX=0
WORKDIR /app
# Install system dependencies
# Combined essential build tools, IPOPT, and visualization/OCP requirements
RUN apt-get update && apt-get install -y \
build-essential \
pkg-config \
curl \
git \
# Optimization (TNA solver)
coinor-libipopt-dev \
libblas-dev \
liblapack-dev \
# CadQuery / OCP / Visualization
libgl1-mesa-glx \
libglu1-mesa \
libglib2.0-0 \
libsm6 \
libxext6 \
libxrender1 \
libice6 \
libegl1 \
libgbm1 \
libosmesa6 \
xvfb \
libfontconfig1 \
libx11-6 \
libxcursor1 \
libxcomposite1 \
libxdamage1 \
libxrandr2 \
ffmpeg \
&& rm -rf /var/lib/apt/lists/*
# Create a non-root user for security (UID 1000 is standard for HF Spaces)
RUN useradd -m -u 1000 user
USER user
ENV HOME=/home/user \
PATH=/home/user/.local/bin:$PATH
WORKDIR $HOME/app
# Copy requirements first for better caching
COPY --chown=user requirements.txt .
# Install Python dependencies
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r requirements.txt
# Copy the rest of the application
COPY --chown=user . .
# Expose the port Streamlit will run on
EXPOSE 7860
# Healthcheck
HEALTHCHECK CMD curl --fail http://localhost:7860/_stcore/health
# Run the application
CMD ["streamlit", "run", "app.py", "--server.port=7860", "--server.address=0.0.0.0"]