madibaalbert commited on
Commit
edcd6df
·
verified ·
1 Parent(s): 4ebbbe1

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +21 -12
Dockerfile CHANGED
@@ -12,7 +12,8 @@ ENV PERSISTENT_VOLUME=/data
12
  EXPOSE 7860
13
  USER root
14
 
15
- # --- 2. INSTALLATION OPTIMISÉE (Build Rapide) ---
 
16
  RUN install_packages acl ca-certificates curl mariadb-server mariadb-client \
17
  apache2 libapache2-mod-php8.2 php8.2-mysql php8.2-xml php8.2-gd php8.2-curl \
18
  php8.2-zip php8.2-mbstring php8.2-intl php8.2-soap php8.2-opcache \
@@ -23,38 +24,46 @@ RUN install_packages acl ca-certificates curl mariadb-server mariadb-client \
23
  chown -R www-data:www-data /var/www/html /var/www/moodledata && \
24
  chmod -R 777 /var/www/html /var/www/moodledata
25
 
26
- # --- 3. CONFIGURATION APACHE & PHP ---
 
 
 
 
 
27
  RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf && \
28
  a2enmod remoteip rewrite headers env && \
29
  sed -i 's/Listen 80/Listen 7860/' /etc/apache2/ports.conf && \
30
  sed -i 's|<VirtualHost \*:80>|<VirtualHost *:7860>|' /etc/apache2/sites-available/000-default.conf && \
31
- sed -i 's/DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm/DirectoryIndex index.php index.html/' /etc/apache2/mods-enabled/dir.conf && \
32
- echo "max_input_vars = 6000\nmemory_limit = 2G\nupload_max_filesize = 512M\npost_max_size = 512M" > /etc/php/8.2/apache2/conf.d/99-moodle.ini
33
 
34
- # --- 4. SCRIPT DE DÉMARRAGE SÉCURISÉ ---
35
- # Correction stricte des apostrophes et suppression des commentaires internes pour éviter l'erreur EOF
36
  RUN { \
37
  echo '#!/bin/bash'; \
38
- echo 'echo "[ACADEMIA INIT] Demarrage du systeme souverain..."'; \
39
  echo 'DB_DATA_DIR="${PERSISTENT_VOLUME}/mysql"'; \
40
  echo 'MOODLE_DATA_DIR="${PERSISTENT_VOLUME}/moodledata"'; \
 
41
  echo 'mkdir -p "$DB_DATA_DIR" "$MOODLE_DATA_DIR" /var/run/mysqld'; \
42
  echo 'chmod -R 777 "$PERSISTENT_VOLUME" /var/run/mysqld'; \
43
  echo 'chown -R mysql:mysql "$DB_DATA_DIR"'; \
44
- echo 'echo "[ACADEMIA INIT] Nettoyage anti-Errno 21..."'; \
45
- echo 'if [ ! -f "/var/www/html/config.php" ]; then'; \
46
- echo ' rm -rf "$DB_DATA_DIR/moodle"'; \
47
- echo 'fi'; \
48
  echo 'if [ ! -d "$DB_DATA_DIR/mysql" ]; then'; \
 
49
  echo ' mysql_install_db --user=mysql --datadir="$DB_DATA_DIR" > /dev/null 2>&1'; \
50
  echo 'fi'; \
 
51
  echo 'mysqld_safe --user=mysql --datadir="$DB_DATA_DIR" --log-bin=mysql-bin --innodb_buffer_pool_size=4G --max_connections=500 &'; \
 
52
  echo 'until mysqladmin ping >/dev/null 2>&1; do sleep 2; done'; \
 
53
  echo 'mysql -u root -e "CREATE DATABASE IF NOT EXISTS moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"'; \
54
  echo 'mysql -u root -e "GRANT ALL PRIVILEGES ON moodle.* TO '\''moodle_user'\''@'\''localhost'\'' IDENTIFIED BY '\''OmniGroup123!'\'';"'; \
 
55
  echo 'rm -rf /var/www/moodledata'; \
56
  echo 'ln -s "$MOODLE_DATA_DIR" /var/www/moodledata'; \
57
  echo 'chown -R www-data:www-data "$MOODLE_DATA_DIR"'; \
 
58
  echo 'cat <<EOF > /var/www/html/config.php'; \
59
  echo '<?php'; \
60
  echo 'unset(\$CFG);'; \
@@ -76,8 +85,8 @@ RUN { \
76
  echo 'require_once(__DIR__ . "/lib/setup.php");'; \
77
  echo 'EOF'; \
78
  echo 'chown www-data:www-data /var/www/html/config.php'; \
 
79
  echo 'source /etc/apache2/envvars'; \
80
  echo 'exec apache2 -D FOREGROUND'; \
81
  } > /start.sh && chmod +x /start.sh
82
-
83
  CMD ["/start.sh"]
 
12
  EXPOSE 7860
13
  USER root
14
 
15
+ # --- 2. INSTALLATION OPTIMISÉE (Couche Unique pour Build Rapide) ---
16
+ # On installe tout et on télécharge Moodle dans la même transaction pour limiter le poids et le temps.
17
  RUN install_packages acl ca-certificates curl mariadb-server mariadb-client \
18
  apache2 libapache2-mod-php8.2 php8.2-mysql php8.2-xml php8.2-gd php8.2-curl \
19
  php8.2-zip php8.2-mbstring php8.2-intl php8.2-soap php8.2-opcache \
 
24
  chown -R www-data:www-data /var/www/html /var/www/moodledata && \
25
  chmod -R 777 /var/www/html /var/www/moodledata
26
 
27
+ RUN mkdir -p /etc/php/8.2/apache2/conf.d /etc/php/8.2/fpm/conf.d && \
28
+ echo '; Custom PHP overrides for Moodle' > /etc/php/8.2/apache2/conf.d/99-custom.ini && \
29
+ echo 'max_input_vars = 5000' >> /etc/php/8.2/apache2/conf.d/99-custom.ini && \
30
+ echo 'max_input_vars = 5000' > /etc/php/8.2/fpm/conf.d/99-custom.ini || true
31
+
32
+ # --- 3. CONFIGURATION APACHE & PROXY ---
33
  RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf && \
34
  a2enmod remoteip rewrite headers env && \
35
  sed -i 's/Listen 80/Listen 7860/' /etc/apache2/ports.conf && \
36
  sed -i 's|<VirtualHost \*:80>|<VirtualHost *:7860>|' /etc/apache2/sites-available/000-default.conf && \
37
+ sed -i 's|DocumentRoot /var/www/html|DocumentRoot /var/www/html|' /etc/apache2/sites-available/000-default.conf && \
38
+ sed -i 's/DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm/DirectoryIndex index.php index.html/' /etc/apache2/mods-enabled/dir.conf
39
 
40
+ # --- 4. SCRIPT DE DÉMARRAGE ROBUSTE (Génération sécurisée) ---
41
+ # Utilisation d'un bloc de commandes pour éviter les erreurs d'échappement bash
42
  RUN { \
43
  echo '#!/bin/bash'; \
44
+ echo 'echo "[ACADEMIA INIT] Démarrage du système souverain..."'; \
45
  echo 'DB_DATA_DIR="${PERSISTENT_VOLUME}/mysql"'; \
46
  echo 'MOODLE_DATA_DIR="${PERSISTENT_VOLUME}/moodledata"'; \
47
+ echo 'echo "[ACADEMIA INIT] Vérification du volume persistant 500Go..."'; \
48
  echo 'mkdir -p "$DB_DATA_DIR" "$MOODLE_DATA_DIR" /var/run/mysqld'; \
49
  echo 'chmod -R 777 "$PERSISTENT_VOLUME" /var/run/mysqld'; \
50
  echo 'chown -R mysql:mysql "$DB_DATA_DIR"'; \
 
 
 
 
51
  echo 'if [ ! -d "$DB_DATA_DIR/mysql" ]; then'; \
52
+ echo ' echo "[ACADEMIA INIT] Création de la base de données système MariaDB..."'; \
53
  echo ' mysql_install_db --user=mysql --datadir="$DB_DATA_DIR" > /dev/null 2>&1'; \
54
  echo 'fi'; \
55
+ echo 'echo "[ACADEMIA INIT] Lancement de MariaDB (Optimisation 16Go RAM)..."'; \
56
  echo 'mysqld_safe --user=mysql --datadir="$DB_DATA_DIR" --log-bin=mysql-bin --innodb_buffer_pool_size=4G --max_connections=500 &'; \
57
+ echo 'echo "[ACADEMIA INIT] Attente de la synchronisation de la base..."'; \
58
  echo 'until mysqladmin ping >/dev/null 2>&1; do sleep 2; done'; \
59
+ echo 'echo "[ACADEMIA INIT] MariaDB est prêt. Configuration des privilèges..."'; \
60
  echo 'mysql -u root -e "CREATE DATABASE IF NOT EXISTS moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"'; \
61
  echo 'mysql -u root -e "GRANT ALL PRIVILEGES ON moodle.* TO '\''moodle_user'\''@'\''localhost'\'' IDENTIFIED BY '\''OmniGroup123!'\'';"'; \
62
+ echo 'echo "[ACADEMIA INIT] Liaison du stockage persistant (Fichiers & Cours)..."'; \
63
  echo 'rm -rf /var/www/moodledata'; \
64
  echo 'ln -s "$MOODLE_DATA_DIR" /var/www/moodledata'; \
65
  echo 'chown -R www-data:www-data "$MOODLE_DATA_DIR"'; \
66
+ echo 'echo "[ACADEMIA INIT] Configuration de Moodle (Protection Proxy 404)..."'; \
67
  echo 'cat <<EOF > /var/www/html/config.php'; \
68
  echo '<?php'; \
69
  echo 'unset(\$CFG);'; \
 
85
  echo 'require_once(__DIR__ . "/lib/setup.php");'; \
86
  echo 'EOF'; \
87
  echo 'chown www-data:www-data /var/www/html/config.php'; \
88
+ echo 'echo "[ACADEMIA INIT] Serveur Web Apache prêt sur le port 7860. Lancement !!"'; \
89
  echo 'source /etc/apache2/envvars'; \
90
  echo 'exec apache2 -D FOREGROUND'; \
91
  } > /start.sh && chmod +x /start.sh
 
92
  CMD ["/start.sh"]