LC-11-AstroDynamics / Dockerfile
professor-chen's picture
Sync from GitHub via hub-sync
2a6dc61 verified
Raw History Blame Contribute Delete
1.57 kB
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"]