subprocess1 / Dockerfile
sreepathi-ravikumar's picture
Update Dockerfile
7a4a1b8 verified
FROM python:3.11-slim
# Install Rust and maturin
USER root
RUN apt-get update && apt-get install -y curl build-essential pkg-config libssl-dev \
&& curl https://sh.rustup.rs -sSf | bash -s -- -y \
&& . "$HOME/.cargo/env" \
&& pip install maturin
# 1. First create user and directory structure
RUN useradd -m appuser && \
mkdir -p /app/data && \
chown -R appuser:appuser /app
# 2. Switch to appuser early
USER appuser
WORKDIR /app
# 3. Temporary root access for system packages
USER root
RUN apt-get update && apt-get install -y \
ffmpeg \
tesseract-ocr \
tesseract-ocr-tam \
fonts-liberation \
&& rm -rf /var/lib/apt/lists/*
# 4. Switch back to appuser for Python operations
USER appuser
# 5. Install Python packages (first copy just requirements)
COPY --chown=appuser:appuser requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# --- RUST BUILD START ---
USER root
COPY --chown=appuser:appuser rust_highlight /app/rust_highlight
WORKDIR /app/rust_highlight
ENV PATH="/root/.cargo/bin:${PATH}"
RUN maturin build --release --manifest-path Cargo.toml
RUN pip install target/wheels/*.whl
# Go back to app setup
USER appuser
WORKDIR /app
# --- RUST BUILD END ---
# --- RUST COMBINER BUILD START ---
USER root
COPY --chown=appuser:appuser rust_combiner /app/rust_combiner
WORKDIR /app/rust_combiner
ENV PATH="/root/.cargo/bin:${PATH}"
RUN maturin build --release --manifest-path Cargo.toml
RUN pip install target/wheels/*.whl
# Go back to app setup
USER appuser
WORKDIR /app
# --- RUST COMBINER BUILD END ---
# 6. Copy all application files
COPY --chown=appuser:appuser app.py image_fetcher.py video.py video2.py ./
# 7. Environment variables
ENV BASE_DIR="/app/data"
EXPOSE 7860
CMD ["python", "app.py"]