| .github/workflows | ||
| commande build docker amd arm.txt | ||
| config.json | ||
| CONFIG_GUIDE.md | ||
| docker-compose.yml | ||
| dockerfile | ||
| dockerfile.template | ||
| generate_dockerfile.ps1 | ||
| generate_dockerfile.py | ||
| LICENSE | ||
| Logo.png | ||
| README.md | ||
| VERSION | ||
| VERSION.md | ||
Image PHP-Apache Personnalisable et Multi-Architecture
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).
🔒 Sécurité
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
⚙️ Configuration
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.
🚀 Utilisation
📦 Utiliser l'image prête à l'emploi
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/html
Avec 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).
🔧 Personnaliser et créer votre propre image
Si vous voulez forker ce projet pour créer vos propres images personnalisées :
1. Fork le projet
- Cliquez sur "Fork" en haut à droite de ce dépôt
- Clonez votre fork localement
2. Configurez GitHub Actions
- Allez dans Settings → Actions → General
- Activez "Read and write permissions" pour
GITHUB_TOKEN - Dans Packages, rendez votre package public (optionnel)
3. Personnalisez la configuration
# 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 push
4. Utilisez votre image
Vos images seront publiées sur ghcr.io/VOTRE_USERNAME/webapp:latest
🛠️ Build Automatisé (pour les mainteneurs du projet)
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
💻 Build et test en local
Si vous voulez construire et tester l'image localement avant de pusher :
-
Générer le Dockerfile :
Avec Python :
python generate_dockerfile.pyAvec 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 -dVotre site sera disponible sur http://localhost:8080.
📜 Licences & Attributions
Ce projet utilise et remercie les outils open source suivants :
Outils Tiers
-
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)
Licence de ce Projet
Ce projet est sous licence GNU General Public License v3.0 (GPL-3.0). Voir le fichier LICENSE pour plus de détails.