From abc68710622dfb916bedfd931887676cd23b5b65 Mon Sep 17 00:00:00 2001 From: Louis Mazin Date: Thu, 15 Oct 2026 17:01:49 +0200 Subject: [PATCH] nice --- start.sh | 49 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/start.sh b/start.sh index 7319e45..dce6689 100644 --- a/start.sh +++ b/start.sh @@ -70,14 +70,49 @@ export BACKEND_PROXY_HOST=127.0.0.1 # -------------------------------------- cd /home/container/backend -python3 -m pip install -r requirements.txt -python3 manage.py check -python3 manage.py migrate --noinput -python3 manage.py ensure_admin -python3 manage.py collectstatic --noinput --verbosity 0 +# Pterodactyl : le systeme Python du conteneur peut etre en lecture seule. +# Installer les dependances dans /home/container (persistant et inscriptible), +# jamais dans les site-packages systeme. +PYTHON_BIN="python3" +VENV_DIR="/home/container/.venv" -echo "Démarrage Django sur :${BACKEND_PORT}" -python3 manage.py runserver "0.0.0.0:${BACKEND_PORT}" --noreload & +if [[ -x "$VENV_DIR/bin/python" ]] && "$VENV_DIR/bin/python" -m pip --version >/dev/null 2>&1; then + PYTHON_BIN="$VENV_DIR/bin/python" +else + # Nettoie un eventuel venv incomplet (ex. ensurepip absent). + rm -rf -- "$VENV_DIR" + echo "Creation de l'environnement Python dans $VENV_DIR..." + if python3 -m venv --system-site-packages "$VENV_DIR" \ + && "$VENV_DIR/bin/python" -m pip --version >/dev/null 2>&1; then + PYTHON_BIN="$VENV_DIR/bin/python" + else + # Certaines images Pterodactyl ne contiennent pas le module venv. + # pip --target fonctionne sans droits root ni ecriture dans /usr/local. + echo "venv indisponible : installation locale avec pip --target." + DEPS_DIR="/home/container/.python-deps" + mkdir -p "$DEPS_DIR" + export PYTHONPATH="$DEPS_DIR${PYTHONPATH:+:$PYTHONPATH}" + PYTHON_BIN="python3" + fi +fi + +if [[ "$PYTHON_BIN" == "python3" ]]; then + # Repli pour les images sans venv : repertorie accessible en ecriture. + echo "Installation des dependances Python dans /home/container/.python-deps..." + python3 -m pip install --disable-pip-version-check --no-cache-dir \ + --target /home/container/.python-deps --upgrade -r requirements.txt +else + echo "Installation / verification des dependances dans le venv local..." + "$PYTHON_BIN" -m pip install --disable-pip-version-check --no-cache-dir -r requirements.txt +fi + +"$PYTHON_BIN" manage.py check +"$PYTHON_BIN" manage.py migrate --noinput +"$PYTHON_BIN" manage.py ensure_admin +"$PYTHON_BIN" manage.py collectstatic --noinput --verbosity 0 + +echo "Demarrage Django sur :${BACKEND_PORT}" +"$PYTHON_BIN" manage.py runserver "0.0.0.0:${BACKEND_PORT}" --noreload & BACKEND_PID=$! # --------------------------------------