-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsrcs_requirements_wordpress_Dockerfile.txt
More file actions
92 lines (82 loc) · 4.52 KB
/
Copy pathsrcs_requirements_wordpress_Dockerfile.txt
File metadata and controls
92 lines (82 loc) · 4.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# --- Étape 1: Définir l'image de base ---
ARG ALPINE_VERSION="3.19"
FROM alpine:${ALPINE_VERSION}
# --- Étape 2: Définir les variables d'environnement pour les versions et configurations ---
# Ces ARGs sont passés par docker-compose.yml.
ARG WP_VERSION="6.5.4" # Avant-dernière version stable de WordPress (VÉRIFIEZ !)
ARG PHP_VERSION="php82" # Version de PHP (ex: php81, php82, php83)
ARG WP_SHA256_CHECKSUM="METTEZ_ICI_LE_VRAI_CHECKSUM_POUR_WP_${WP_VERSION}" # TRÈS IMPORTANT
# Variables d'environnement pour la configuration de WordPress (peuvent être surchargées)
# Les valeurs réelles viendront de .env via docker-compose.
ENV DB_HOST=mariadb
ENV WORDPRESS_DB_NAME=wordpress_db_default
ENV WORDPRESS_DB_USER=wp_user_default
# Le mot de passe de la BDD viendra d'un secret.
# --- Étape 3: Installer les paquets nécessaires ---
# PHP-FPM, extensions PHP pour WordPress, curl pour télécharger WordPress, tar pour l'extraire.
RUN apk update && \
apk add --no-cache \
${PHP_VERSION}-fpm \
${PHP_VERSION}-mysqli \
${PHP_VERSION}-gd \
${PHP_VERSION}-curl \
${PHP_VERSION}-zip \
${PHP_VERSION}-xml \
${PHP_VERSION}-mbstring \
${PHP_VERSION}-json \
${PHP_VERSION}-session \
${PHP_VERSION}-ctype \
${PHP_VERSION}-dom \
${PHP_VERSION}-phar \
${PHP_VERSION}-iconv \
${PHP_VERSION}-intl \
${PHP_VERSION}-fileinfo \
${PHP_VERSION}-opcache \
# Outils
curl \
tar \
bash # Pour le script de configuration
# --- Étape 4: Configurer PHP-FPM ---
# Le fichier de configuration de pool PHP-FPM se trouve souvent dans /etc/phpXX/php-fpm.d/www.conf
# Adaptez le chemin si nécessaire pour votre version de PHP et Alpine.
# - Écouter sur le port 9000 sur toutes les interfaces.
# - Désactiver la démonisation (pour que Docker puisse gérer le processus).
# - Augmenter les limites d'upload (optionnel mais souvent utile pour WordPress).
RUN sed -i "s|listen = /run/php-fpm/www.sock|listen = 0.0.0.0:9000|g" /etc/${PHP_VERSION}/php-fpm.d/www.conf && \
sed -i "s|;listen.owner = nobody|listen.owner = nobody|g" /etc/${PHP_VERSION}/php-fpm.d/www.conf && \
sed -i "s|;listen.group = nobody|listen.group = nobody|g" /etc/${PHP_VERSION}/php-fpm.d/www.conf && \
sed -i "s|;listen.mode = 0660|listen.mode = 0660|g" /etc/${PHP_VERSION}/php-fpm.d/www.conf && \
sed -i "s|user = nobody|user = nobody|g" /etc/${PHP_VERSION}/php-fpm.d/www.conf && \
sed -i "s|group = nobody|group = nobody|g" /etc/${PHP_VERSION}/php-fpm.d/www.conf && \
sed -i "s|;daemonize = yes|daemonize = no|g" /etc/${PHP_VERSION}/php-fpm.conf && \
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 64M/g' /etc/${PHP_VERSION}/php.ini && \
sed -i 's/post_max_size = 8M/post_max_size = 64M/g' /etc/${PHP_VERSION}/php.ini && \
sed -i 's/memory_limit = 128M/memory_limit = 256M/g' /etc/${PHP_VERSION}/php.ini
# --- Étape 5: Télécharger et installer WordPress ---
# Définir le répertoire de travail.
WORKDIR /var/www/html
# Télécharger WordPress, vérifier son checksum, l'extraire, et nettoyer.
# Le sujet interdit le tag 'latest', donc une version spécifique est téléchargée.
RUN curl -o wordpress.tar.gz -SL "https://wordpress.org/wordpress-${WP_VERSION}.tar.gz" && \
echo "${WP_SHA256_CHECKSUM} *wordpress.tar.gz" | sha256sum -c - && \
tar -xzf wordpress.tar.gz -C /var/www/html --strip-components=1 && \
rm wordpress.tar.gz && \
# Définir les permissions pour que PHP-FPM (tournant en tant que 'nobody' ou 'www-data') puisse écrire.
# L'utilisateur 'nobody' est souvent utilisé par défaut par php-fpm sur Alpine.
# Si vous avez un utilisateur spécifique (ex: www-data), adaptez.
chown -R nobody:nobody /var/www/html
# --- Étape 6: Copier le script de configuration ---
# Ce script configurera wp-config.php au démarrage du conteneur.
# Il doit être dans srcs/requirements/wordpress/tools/
COPY ./tools/configure-wp.sh /usr/local/bin/configure-wp.sh
RUN chmod +x /usr/local/bin/configure-wp.sh
# --- Étape 7: Exposer le port ---
# Exposer le port sur lequel PHP-FPM écoute (pour Nginx).
EXPOSE 9000
# --- Étape 8: Définir le point d'entrée et la commande par défaut ---
# L'ENTRYPOINT est le script qui configure wp-config.php puis lance PHP-FPM.
ENTRYPOINT ["/usr/local/bin/configure-wp.sh"]
# La CMD est la commande pour démarrer PHP-FPM en avant-plan.
# Le -F (ou --nodaemonize) est crucial.
# Adaptez le nom de l'exécutable php-fpm (php-fpm82, php-fpm8.2, etc.)
CMD ["${PHP_VERSION}-fpm", "-F"]