stm32-modelzoo-app / Dockerfile
FBAGSTM's picture
STM32 AI Experimentation Hub
747451d
FROM ubuntu:22.04
# Avoid interactive prompts during apt installs (e.g., tzdata).
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Etc/UTC
WORKDIR /app
# Install system dependencies and Python 3.12.9
RUN apt-get update && \
apt-get install -y --no-install-recommends tzdata ca-certificates && \
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \
dpkg-reconfigure -f noninteractive tzdata && \
apt-get install -y software-properties-common wget build-essential libgl1-mesa-glx libglib2.0-0 git tar && \
add-apt-repository ppa:deadsnakes/ppa && \
apt-get update && \
apt-get install -y python3.12 python3.12-dev python3.12-venv && \
wget https://bootstrap.pypa.io/get-pip.py && \
python3.12 get-pip.py && \
rm get-pip.py && \
rm -rf /var/lib/apt/lists/*
# Set python3.12 as default
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.12 1
ENV PYTHONPATH=/app
ENV GIT_PYTHON_REFRESH=quiet
ENV HUGGINGFACE_HUB_CACHE=/app/hf_cache/hub
ENV MPLCONFIGDIR=/app/mplconfig
# Install Python dependencies
COPY requirements.txt .
# Remove system blinker to avoid pip uninstall error
RUN apt-get update && apt-get remove -y python3-blinker || true
RUN mkdir -p /app/hf_cache/transformers /app/hf_cache/hub /app/mplconfig \
&& chmod -R a+rwx /app/hf_cache /app/mplconfig
# Keep pip tooling current (helps with resolver / wheel selection)
RUN python -m pip install --no-cache-dir --upgrade pip setuptools wheel
# Install remaining Python dependencies
RUN python -m pip install --no-cache-dir -r requirements.txt
RUN python -m pip install --no-cache-dir transformers accelerate safetensors sentencepiece
# Sanity check: fail build early if a dependency is missing
RUN python -c "import torch, timm; print('torch', torch.__version__); print('timm', timm.__version__)"
# Copy all project files into /app
COPY . .
# Téléchargement et extraction du dataset flowers
RUN mkdir -p image_classification/datasets && \
wget http://download.tensorflow.org/example_images/flower_photos.tgz -O image_classification/datasets/flower_photos.tgz && \
tar --no-same-owner -xf image_classification/datasets/flower_photos.tgz -C image_classification/datasets && \
rm image_classification/datasets/flower_photos.tgz && \
chmod -R a+rX image_classification/datasets/flower_photos
# Donne les droits d'écriture à tout /app
RUN chmod -R a+rwx /app
EXPOSE 7860
CMD ["python", "app.py"]