# Utiliser Python 3.10 comme base FROM python:3.10-slim # Installer poetry RUN pip install poetry # Create a non-root user RUN useradd -m -u 1000 appuser # Définir le répertoire de travail WORKDIR /app # Install system dependencies for PyAudio and basic tools RUN apt-get update && apt-get install -y \ gcc \ portaudio19-dev \ python3-dev \ libasound2-dev \ libpulse-dev \ libportaudio2 \ libportaudiocpp0 \ libasound2 \ libasound2-data \ wget \ && rm -rf /var/lib/apt/lists/* # Add NVIDIA repository and install CUDA RUN wget https://developer.download.nvidia.com/compute/cuda/repos/debian11/x86_64/cuda-keyring_1.0-1_all.deb && \ dpkg -i cuda-keyring_1.0-1_all.deb && \ apt-get update && \ apt-get install -y cuda-toolkit-11-8 cuda-cudart-11-8 libcudnn8 && \ rm -rf /var/lib/apt/lists/* && \ rm cuda-keyring_1.0-1_all.deb # Copier les fichiers de dépendances COPY poetry.lock pyproject.toml ./ COPY . . # Configurer poetry pour ne pas créer un environnement virtuel RUN poetry config virtualenvs.create false # Installer les dépendances sans installer le projet lui-même RUN poetry install --only main --no-interaction --no-ansi --no-root # Create static directory and set permissions RUN mkdir -p /app/server/static && \ chown -R appuser:appuser /app # Switch to non-root user USER appuser # Verify permissions after user switch RUN mkdir -p ~/static # Exposer le port utilisé par Flask EXPOSE 7860 # Commande pour démarrer l'application CMD ["python", "-m", "server"]