Docfile commited on
Commit
809e15e
·
verified ·
1 Parent(s): 63fb4eb

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +67 -11
Dockerfile CHANGED
@@ -1,6 +1,4 @@
1
- # Dockerfile pour Apex Ores avec Scheduler DB-Based
2
- # Ce Dockerfile lance à la fois l'application Flask ET le scheduler en arrière-plan
3
-
4
  FROM python:3.11-bookworm
5
 
6
  # Mettre à jour et installer les dépendances système
@@ -8,6 +6,8 @@ RUN apt-get update && apt-get install -y \
8
  wkhtmltopdf \
9
  xvfb \
10
  supervisor \
 
 
11
  && rm -rf /var/lib/apt/lists/*
12
 
13
  # Créer l'utilisateur
@@ -27,12 +27,60 @@ RUN pip install --no-cache-dir --upgrade -r requirements.txt
27
  # Copier tout le code
28
  COPY --chown=user . /app
29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  # Créer la configuration supervisord
31
  RUN echo '[supervisord]\n\
32
  nodaemon=true\n\
33
  user=root\n\
34
  logfile=/var/log/supervisor/supervisord.log\n\
35
  pidfile=/var/run/supervisord.pid\n\
 
36
  \n\
37
  [program:flask]\n\
38
  command=flask run --host=0.0.0.0 --port=7860\n\
@@ -40,9 +88,13 @@ directory=/app\n\
40
  user=user\n\
41
  autostart=true\n\
42
  autorestart=true\n\
43
- stdout_logfile=/var/log/apex/flask.log\n\
44
- stderr_logfile=/var/log/apex/flask.log\n\
45
- environment=PYTHONPATH=/app\n\
 
 
 
 
46
  \n\
47
  [program:scheduler]\n\
48
  command=python3 -m app.task_runner --daemon\n\
@@ -50,9 +102,13 @@ directory=/app\n\
50
  user=user\n\
51
  autostart=true\n\
52
  autorestart=true\n\
53
- stdout_logfile=/var/log/apex/scheduler.log\n\
54
- stderr_logfile=/var/log/apex/scheduler.log\n\
55
- environment=PYTHONPATH=/app' > /etc/supervisor/conf.d/apex.conf
 
 
 
 
56
 
57
  # Variables d'environnement
58
  ENV PYTHONPATH=/app
@@ -62,5 +118,5 @@ ENV PATH="/home/user/.local/bin:$PATH"
62
  # Exposer le port Flask
63
  EXPOSE 7860
64
 
65
- # Commande de démarrage : lance supervisord qui gère les deux processus
66
- CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/apex.conf"]
 
1
+ # Dockerfile pour Apex Ores avec PostgreSQL et diagnostics
 
 
2
  FROM python:3.11-bookworm
3
 
4
  # Mettre à jour et installer les dépendances système
 
6
  wkhtmltopdf \
7
  xvfb \
8
  supervisor \
9
+ postgresql-client \
10
+ curl \
11
  && rm -rf /var/lib/apt/lists/*
12
 
13
  # Créer l'utilisateur
 
27
  # Copier tout le code
28
  COPY --chown=user . /app
29
 
30
+ # Script de démarrage avec vérification de la DB
31
+ RUN echo '#!/bin/bash\n\
32
+ set -e\n\
33
+ \n\
34
+ echo "===== Application Startup at $(date) ====="\n\
35
+ echo "Environment variables:"\n\
36
+ echo "FLASK_ENV: $FLASK_ENV"\n\
37
+ echo "DATABASE_URL: ${DATABASE_URL:0:30}..." # Affiche seulement le début\n\
38
+ \n\
39
+ # Test de connexion PostgreSQL\n\
40
+ echo "Testing PostgreSQL connection..."\n\
41
+ python3 -c "\n\
42
+ import sys\n\
43
+ import os\n\
44
+ try:\n\
45
+ from sqlalchemy import create_engine, text\n\
46
+ db_url = os.environ.get(\"DATABASE_URL\")\n\
47
+ if not db_url:\n\
48
+ print(\"ERROR: DATABASE_URL not set\")\n\
49
+ sys.exit(1)\n\
50
+ engine = create_engine(db_url)\n\
51
+ with engine.connect() as conn:\n\
52
+ result = conn.execute(text(\"SELECT version();\"))\n\
53
+ print(f\"PostgreSQL connected: {result.scalar()[:50]}\")\n\
54
+ print(\"Database connection successful!\")\n\
55
+ except Exception as e:\n\
56
+ print(f\"ERROR connecting to database: {e}\")\n\
57
+ sys.exit(1)\n\
58
+ "\n\
59
+ \n\
60
+ # Initialiser la base de données\n\
61
+ echo "Initializing database..."\n\
62
+ python3 -c "\n\
63
+ from app import create_app, db\n\
64
+ app = create_app()\n\
65
+ with app.app_context():\n\
66
+ db.create_all()\n\
67
+ print(\"Database tables created successfully\")\n\
68
+ " || {\n\
69
+ echo "ERROR: Failed to initialize database"\n\
70
+ exit 1\n\
71
+ }\n\
72
+ \n\
73
+ echo "Starting supervisord..."\n\
74
+ exec /usr/bin/supervisord -c /etc/supervisor/conf.d/apex.conf\n\
75
+ ' > /app/start.sh && chmod +x /app/start.sh
76
+
77
  # Créer la configuration supervisord
78
  RUN echo '[supervisord]\n\
79
  nodaemon=true\n\
80
  user=root\n\
81
  logfile=/var/log/supervisor/supervisord.log\n\
82
  pidfile=/var/run/supervisord.pid\n\
83
+ loglevel=info\n\
84
  \n\
85
  [program:flask]\n\
86
  command=flask run --host=0.0.0.0 --port=7860\n\
 
88
  user=user\n\
89
  autostart=true\n\
90
  autorestart=true\n\
91
+ stdout_logfile=/dev/stdout\n\
92
+ stdout_logfile_maxbytes=0\n\
93
+ stderr_logfile=/dev/stderr\n\
94
+ stderr_logfile_maxbytes=0\n\
95
+ environment=PYTHONPATH=/app,FLASK_APP=run.py\n\
96
+ startsecs=10\n\
97
+ startretries=3\n\
98
  \n\
99
  [program:scheduler]\n\
100
  command=python3 -m app.task_runner --daemon\n\
 
102
  user=user\n\
103
  autostart=true\n\
104
  autorestart=true\n\
105
+ stdout_logfile=/dev/stdout\n\
106
+ stdout_logfile_maxbytes=0\n\
107
+ stderr_logfile=/dev/stderr\n\
108
+ stderr_logfile_maxbytes=0\n\
109
+ environment=PYTHONPATH=/app\n\
110
+ startsecs=10\n\
111
+ startretries=3' > /etc/supervisor/conf.d/apex.conf
112
 
113
  # Variables d'environnement
114
  ENV PYTHONPATH=/app
 
118
  # Exposer le port Flask
119
  EXPOSE 7860
120
 
121
+ # Commande de démarrage avec script de vérification
122
+ CMD ["/app/start.sh"]