gmao/docker/entrypoint.sh

58 lines
2 KiB
Bash
Executable file

#!/bin/bash
set -e
# Forcer l'utilisation des packages Python installes pour gmao
export PATH=/home/gmao/.local/bin:$PATH
export PYTHONPATH=/home/gmao/.local/lib/python3.13/site-packages:$PYTHONPATH
# Si on est root, corriger les permissions des volumes montes
if [ "$(id -u)" = "0" ]; then
echo "Mise a jour des permissions des volumes..."
chown -R 1000:1000 /app/app_new /app/data /app/migrations /app/gmao_watchdog.py /app/ent_watchdog.py /app/pronote_watchdog.py /app/run_app_new.py /app/watchdog_dnd.py /var/log/supervisor /run/supervisor 2>/dev/null || true
chmod -R u+rX /app 2>/dev/null || true
fi
# Attendre MariaDB
echo "Attente de MariaDB sur ${DB_HOST:-mariadb}:${DB_PORT:-3306}..."
python3 - <<PYEOF "${DB_HOST:-mariadb}" "${DB_PORT:-3306}"
import socket, time, sys
host, port = sys.argv[1], int(sys.argv[2])
while True:
try:
s = socket.socket()
s.connect((host, port))
s.close()
break
except Exception:
time.sleep(1)
PYEOF
echo "MariaDB OK"
# S'assurer que les dossiers de donnees existent
mkdir -p /app/data/cache /app/app_new/uploads /app/app_new/instance
chown -R 1000:1000 /app/data /app/app_new/uploads /app/app_new/instance 2>/dev/null || true
# Alembic
echo "Verification Alembic..."
python3 - <<PYEOF "${MARIADB_DATABASE:-gmao_db}"
import sys
from sqlalchemy import inspect
from app_new import create_app
db_name = sys.argv[1]
app = create_app()
with app.app_context():
engine = app.extensions['migrate'].db.engine
inspector = inspect(engine)
tables = inspector.get_table_names()
print(f"Tables presentes: {len(tables)}")
if 'alembic_version' not in tables:
print("Note: alembic_version absent, base probablement initialisee par dump SQL")
else:
print("alembic_version present, migrations suivies")
PYEOF
echo "Lancement de l'application..."
# Lancer supervisord en root, il demarrera les programmes avec l'utilisateur specifie
exec /home/gmao/.local/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf