FROM python:3.13-slim # Copie l’exécutable uv depuis l’image officielle COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ ENV PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 \ UV_COMPILE_BYTECODE=1 \ UV_LINK_MODE=copy \ UV_PROJECT_ENVIRONMENT=/app/.venv \ PATH="/app/.venv/bin:$PATH" \ SDL_VIDEODRIVER=dummy \ ASTRO_API_URL=http://127.0.0.1:8000 \ ASTRO_ROOT_PATH=/api \ ASTRO_DATA_DIR=/tmp/astrodynamics RUN apt-get update \ && apt-get install -y --no-install-recommends \ build-essential \ nginx \ swig \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # Copie d’abord les fichiers de dépendances pour profiter du cache Docker COPY pyproject.toml uv.lock ./ # Installe exactement les versions verrouillées dans uv.lock RUN uv sync \ --frozen \ --no-install-project \ --no-dev # Copie ensuite uniquement l’application et le modèle final COPY 4_AstroDynamics/app ./4_AstroDynamics/app COPY 4_AstroDynamics/models/tuning/dqn_lunarlander_final.zip \ ./4_AstroDynamics/models/tuning/dqn_lunarlander_final.zip COPY nginx.conf start.sh ./ RUN chmod +x /app/start.sh \ && useradd --create-home --uid 1000 appuser \ && mkdir -p \ /tmp/astrodynamics \ /tmp/nginx/client_temp \ /tmp/nginx/proxy_temp \ /tmp/nginx/fastcgi_temp \ /tmp/nginx/uwsgi_temp \ /tmp/nginx/scgi_temp \ && chown -R appuser:appuser \ /app \ /tmp/astrodynamics \ /tmp/nginx USER appuser EXPOSE 7860 CMD ["/app/start.sh"]