Update Dockerfile
Browse files- 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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
|
| 32 |
-
|
| 33 |
|
| 34 |
-
# --- 4. SCRIPT DE DÉMARRAGE
|
| 35 |
-
#
|
| 36 |
RUN { \
|
| 37 |
echo '#!/bin/bash'; \
|
| 38 |
-
echo 'echo "[ACADEMIA INIT]
|
| 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"]
|