text2zinc-editor / Dockerfile
skadio's picture
Update Dockerfile
b0aaa6b verified
FROM python:3.11
# Install system dependencies
RUN apt-get update && apt-get install -y \
wget \
&& rm -rf /var/lib/apt/lists/*
# Create directory for MiniZinc
RUN mkdir -p /opt/minizinc
# Download and extract MiniZinc bundle
RUN wget https://github.com/MiniZinc/MiniZincIDE/releases/download/2.9.0/MiniZincIDE-2.9.0-bundle-linux-x86_64.tgz && \
tar xzf MiniZincIDE-2.9.0-bundle-linux-x86_64.tgz -C /opt/minizinc --strip-components=1 && \
rm MiniZincIDE-2.9.0-bundle-linux-x86_64.tgz
# Add MiniZinc bin to system PATH
ENV PATH="/opt/minizinc/bin:$PATH"
# Set SPACE_ID for enabling a custom save process
ENV SPACE_ID="Its a space!"
# Set up non-root user FIRST (before creating app directories)
RUN useradd -m -u 1000 user
# Create necessary directories for data persistence with proper ownership
RUN mkdir -p /app/submissions /app/results /tmp/flet_storage && \
chown -R user:user /app && \
chmod -R 777 /app/submissions /app/results /tmp/flet_storage /tmp
# Switch to user
USER user
# Set environment variables
ENV PATH="/home/user/.local/bin:/opt/minizinc/bin:$PATH"
ENV HOME="/home/user"
ENV FLET_APP_STORAGE_DIR=/tmp/flet_storage
# Set working directory
WORKDIR /app
# Copy requirements first for better caching
COPY --chown=user:user ./requirements.txt requirements.txt
RUN pip install --no-cache-dir --upgrade -r requirements.txt
# Copy application files
COPY --chown=user:user . /app
# Expose port
EXPOSE 7860
# Command to run the Flet web app
CMD ["flet", "run", "--web", "--port", "7860", "--host", "0.0.0.0", "app.py"]