Ce projet fournit une base pour construire des images Docker php-apache personnalisées. Grâce à un système de configuration simple et à l'intégration de GitHub Actions, vous pouvez facilement générer des images multi-architectures (linux/amd64, linux/arm64) adaptées à vos besoins.
Cas d'usage : Idéale pour héberger des sites web et CMS tels que WordPress, Nextcloud, Joomla, PrestaShop, ou toute application PHP nécessitant Apache et des extensions personnalisées.
Les images sont automatiquement construites et publiées sur le GitHub Container Registry (ghcr.io).
Cette image intègre des mesures de sécurité proactives :
- Mises à jour automatiques :
apt-get upgrade -yapplique les correctifs de sécurité du système - Installation fiable : mlocati/php-extension-installer compile les extensions avec les bibliothèques système à jour
- Protection CVE : Mitigation CVE-2025-23048 (Apache) via recommandations de configuration
- Images optimisées : Nettoyage automatique (
apt-get clean) pour réduire la surface d'attaque - Build sans cache :
no-cache: truegarantit que chaque build récupère les derniers correctifs de sécurité - Multi-architecture robuste : Compatible AMD64 et ARM64 sans erreurs de compilation
La configuration de l'image se fait entièrement via le fichier config.json. Vous pouvez y modifier :
php_version: Version de PHP (ex:8.3)system_tools: Outils système à installer (git, curl, zip...)php_extensions: Extensions PHP (Core + PECL) - gérées automatiquement par mlocati/php-extension-installerphp_ini_settings: Paramètres duphp.ini
Avantage : Le système utilise mlocati/php-extension-installer qui gère automatiquement les dépendances système et fonctionne de manière fiable sur AMD64 et ARM64.
Modifiez simplement ce fichier, et GitHub Actions s'occupera de générer un nouveau dockerfile et de construire l'image correspondante.
Si vous voulez simplement utiliser cette image dans vos projets sans la modifier :
Avec Docker Compose :
version: '3.8'
services:
my-app:
image: ghcr.io/mouette03/webapp:latest # ou :v1.0.0 pour une version spécifique
ports:
- "8080:80"
volumes:
- ./src:/var/www/htmlAvec Docker CLI :
docker pull ghcr.io/mouette03/webapp:latest
docker run -d -p 8080:80 -v ./src:/var/www/html ghcr.io/mouette03/webapp:latest💡 Vous pouvez épingler une version spécifique en remplaçant
latestpar une version (ex:v1.0.0,v1.2.3).
Si vous voulez forker ce projet pour créer vos propres images personnalisées :
- Cliquez sur "Fork" en haut à droite de ce dépôt
- Clonez votre fork localement
- Allez dans Settings → Actions → General
- Activez "Read and write permissions" pour
GITHUB_TOKEN - Dans Packages, rendez votre package public (optionnel)
# Modifiez config.json selon vos besoins
code config.json
# Commitez et poussez
git add config.json
git commit -m "feat: personnalisation de l'image"
git pushVos images seront publiées sur ghcr.io/VOTRE_USERNAME/webapp:latest
Modifications simples (config, ajustements) :
- Modifiez
config.jsonselon vos besoins - Poussez sur
main - La version PATCH s'incrémente automatiquement (ex:
1.0.5→1.0.6)
Nouvelles fonctionnalités ou changements majeurs :
- Modifiez
VERSIONmanuellement (ex:1.0.8→1.1.0ou2.0.0) - Modifiez
config.jsonsi nécessaire - Poussez sur
main
GitHub Actions va automatiquement :
- Vérifier le flag
[skip ci]pour éviter les builds inutiles - Incrémenter la version (PATCH uniquement, sauf si vous changez MAJOR/MINOR)
- Commiter la nouvelle version dans
VERSION - Générer le
dockerfileà partir du template avec les améliorations de sécurité - Construire l'image pour
linux/amd64etlinux/arm64(via QEMU) - Build sans cache pour garantir les dernières mises à jour de sécurité
- Publier l'image sur
ghcr.io/mouette03/webappavec les tags ::latest(dernière version):v1.0.6(version avec préfixe v)
- Nettoyer automatiquement les images non-taggées orphelines
Si vous voulez construire et tester l'image localement avant de pusher :
-
Générer le Dockerfile :
Avec Python :
python generate_dockerfile.py
Avec PowerShell (Windows) :
.\generate_dockerfile.ps1
-
Construire l'image :
docker build -t mon-image-perso . -
Lancer avec
docker-compose: Le fichierdocker-compose.ymlinclus peut être utilisé pour un test rapide.docker-compose up -d
Votre site sera disponible sur http://localhost:8080.
Ce projet utilise et remercie les outils open source suivants :
-
mlocati/php-extension-installer
Licence : MIT License
Facilite l'installation des extensions PHP, y compris pour ARM64 -
PHP Official Docker Images
Licence : Diverses licences open source (détails)
Image de base :php:8.3-apache-bookworm -
GitHub Actions utilisées :
- actions/checkout (MIT)
- docker/setup-qemu-action (Apache 2.0)
- docker/setup-buildx-action (Apache 2.0)
- docker/login-action (Apache 2.0)
- docker/metadata-action (Apache 2.0)
- docker/build-push-action (Apache 2.0)
Ce projet est sous licence GNU General Public License v3.0 (GPL-3.0). Voir le fichier LICENSE pour plus de détails.
