Docker Webapp pour hebergement CMS ou site web php apache
Find a file
2025-12-15 21:51:30 +01:00
.github/workflows Delete welcome.md 2025-12-15 21:48:54 +01:00
commande build docker amd arm.txt update dockerfile optimisé 2025-12-13 01:39:19 +01:00
config.json update dockerfile optimisé 2025-12-13 01:39:19 +01:00
CONFIG_GUIDE.md update dockerfile optimisé 2025-12-13 01:39:19 +01:00
docker-compose.yml update dockerfile optimisé 2025-12-13 01:39:19 +01:00
dockerfile update dockerfile optimisé 2025-12-13 01:39:19 +01:00
dockerfile.template feat: add OCI labels for package description and metadata [skip ci] 2025-12-14 23:46:32 +01:00
generate_dockerfile.ps1 update 2025-12-13 01:44:45 +01:00
generate_dockerfile.py update 2025-12-13 01:44:45 +01:00
LICENSE Update LICENSE 2025-11-09 22:33:22 +01:00
Logo.png upload 2025-10-26 13:17:23 +01:00
README.md update licences tiers [skip ci] 2025-12-14 17:14:43 +01:00
VERSION Downgrade version from 1.0.1 to 1.0.0 [skip ci] 2025-12-15 21:51:30 +01:00
VERSION.md update version 2025-12-13 01:51:56 +01:00

WebApp Logo

Image PHP-Apache Personnalisable et Multi-Architecture

Docker Build & Push Container PHP Version Platform License Last Commit

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 -y applique 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: true garantit 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-installer
  • php_ini_settings : Paramètres du php.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 latest par 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 SettingsActionsGeneral
  • 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) :

  1. Modifiez config.json selon vos besoins
  2. Poussez sur main
  3. La version PATCH s'incrémente automatiquement (ex: 1.0.51.0.6)

Nouvelles fonctionnalités ou changements majeurs :

  1. Modifiez VERSION manuellement (ex: 1.0.81.1.0 ou 2.0.0)
  2. Modifiez config.json si nécessaire
  3. 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/amd64 et linux/arm64 (via QEMU)
  • Build sans cache pour garantir les dernières mises à jour de sécurité
  • Publier l'image sur ghcr.io/mouette03/webapp avec 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 :

  1. Générer le Dockerfile :

    Avec Python :

    python generate_dockerfile.py
    

    Avec PowerShell (Windows) :

    .\generate_dockerfile.ps1
    
  2. Construire l'image :

    docker build -t mon-image-perso .
    
  3. Lancer avec docker-compose : Le fichier docker-compose.yml inclus peut être utilisé pour un test rapide.

    docker-compose up -d
    

    Votre site sera disponible sur http://localhost:8080.


📜 Licences & Attributions

Ce projet utilise et remercie les outils open source suivants :

Outils Tiers

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.