Skip to content

Repository files navigation

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documentation du Projet Docker</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            line-height: 1.6;
            background-color: #f9f9f9;
            color: #333;
            margin: 0;
            padding: 0;
        }
        header {
            background: #0078d7;
            color: #fff;
            padding: 10px 20px;
            text-align: center;
        }
        section {
            padding: 20px;
            margin: 20px;
            background: #fff;
            border-radius: 8px;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
        }
        h1, h2 {
            color: #0078d7;
        }
        ul {
            padding-left: 20px;
        }
        li {
            margin-bottom: 10px;
        }
        footer {
            text-align: center;
            padding: 10px;
            background: #0078d7;
            color: #fff;
            position: fixed;
            bottom: 0;
            width: 100%;
        }
        pre {
            background: #f4f4f4;
            padding: 10px;
            border-radius: 4px;
            overflow-x: auto;
        }
        code {
            background: #f4f4f4;
            padding: 2px 4px;
            border-radius: 4px;
        }
    </style>
</head>
<body>
    <header>
        <h1>Documentation du Projet Docker</h1>
        <p>Résumé des exercices et fonctionnalités implémentées</p>
    </header>

    <section>
        <h2>Exercice 1 : Application Flask</h2>
        <ul>
            <li>Déploiement d'une application Flask simple.</li>
            <li>Exposition du port 5000 pour accéder à l'application.</li>
            <li>Utilisation d'un utilisateur non-root pour des raisons de sécurité.</li>
        </ul>
    </section>

    <section>
        <h2>Exercice 2 : Multi-stage Build</h2>
        <ul>
            <li>Utilisation de Node.js pour construire des assets statiques.</li>
            <li>Déploiement des fichiers statiques avec Nginx.</li>
            <li>Optimisation de l'image Docker grâce à un multi-stage build.</li>
        </ul>
    </section>

    <section>
        <h2>Exercice 3 : Gestion des Volumes</h2>
        <ul>
            <li>Configuration de volumes pour la persistance des données et des logs.</li>
            <li>Montage en lecture seule pour les fichiers de configuration.</li>
        </ul>
    </section>

    <section>
        <h2>Exercice 4 : Reverse Proxy avec Nginx</h2>
        <ul>
            <li>Configuration de Nginx comme reverse proxy pour une application web.</li>
            <li>Exposition des ports pour accéder à l'application via Nginx.</li>
        </ul>
    </section>

    <section>
        <h2>Exercice 5 : Application Flask avec Nginx</h2>
        <ul>
            <li>Déploiement d'une application Flask derrière un reverse proxy Nginx.</li>
            <li>Configuration des dépendances entre les services.</li>
        </ul>
    </section>

    <section>
        <h2>Exercice 6 : Gestion des Environnements</h2>
        <ul>
            <li>Utilisation de fichiers `.env` pour gérer les variables d'environnement.</li>
            <li>Configuration distincte pour les environnements de développement et de production.</li>
        </ul>
    </section>

    <section>
        <h2>Exercice 7 : Scale et Load Balancing</h2>
        <ul>
            <li>Scale horizontal des services Flask avec plusieurs instances.</li>
            <li>Configuration de Nginx pour le load balancing.</li>
            <li>Ajout de Prometheus et Grafana pour le monitoring.</li>
        </ul>
    </section>

    <section>
        <h2>Exercice 8 : Healthchecks</h2>
        <ul>
            <li>Implémentation de routes `/health` pour vérifier la disponibilité des services.</li>
            <li>Configuration de Docker pour redémarrer automatiquement les conteneurs en cas de défaillance.</li>
        </ul>
    </section>

    <section>
        <h2>Exercice 9 : Sécurité</h2>
        <ul>
            <li>Utilisation d'utilisateurs non-root pour les conteneurs.</li>
            <li>Limitation des ressources CPU et mémoire pour chaque service.</li>
            <li>Isolation des services dans des réseaux Docker personnalisés.</li>
        </ul>
    </section>

    <section>
        <h2>Exercice 10 : Déploiement</h2>
        <ul>
            <li>Gestion des secrets avec Docker Secrets.</li>
            <li>Configuration de volumes persistants pour les données.</li>
            <li>Stratégies de mise à jour des services avec Docker Compose.</li>
        </ul>
    </section>

    <section>
        <h2>Comment lancer le projet</h2>
        <p>Voici les étapes pour lancer le projet :</p>
        <ol>
            <li>Assurez-vous que Docker et Docker Compose sont installés sur votre machine.</li>
            <li>Clonez le dépôt ou placez-vous dans le répertoire du projet.</li>
            <li>Construisez et démarrez les services avec la commande suivante :</li>
            <pre><code>docker-compose up --build</code></pre>
            <li>Pour arrêter les services, utilisez la commande :</li>
            <pre><code>docker-compose down</code></pre>
        </ol>
    </section>

    <section>
        <h2>Accéder aux services</h2>
        <p>Une fois les services démarrés, vous pouvez y accéder via les ports configurés :</p>
        <ul>
            <li><strong>Application Flask :</strong> <a href="http://localhost:10017" target="_blank">http://localhost:10017</a></li>
            <li><strong>Nginx (reverse proxy) :</strong> <a href="http://localhost:10018" target="_blank">http://localhost:10018</a></li>
            <li><strong>Prometheus (monitoring) :</strong> <a href="http://localhost:9090" target="_blank">http://localhost:9090</a></li>
            <li><strong>Grafana (visualisation) :</strong> <a href="http://localhost:3000" target="_blank">http://localhost:3000</a></li>
        </ul>
    </section>

    <section>
        <h2>Commandes utiles</h2>
        <p>Voici quelques commandes utiles pour interagir avec les conteneurs :</p>
        <ul>
            <li><strong>Voir les conteneurs en cours d'exécution :</strong></li>
            <pre><code>docker ps</code></pre>
            <li><strong>Voir les logs d'un conteneur :</strong></li>
            <pre><code>docker logs [nom_du_conteneur]</code></pre>
            <li><strong>Se connecter à un conteneur :</strong></li>
            <pre><code>docker exec -it [nom_du_conteneur] sh</code></pre>
            <li><strong>Supprimer tous les conteneurs et volumes :</strong></li>
            <pre><code>docker-compose down --volumes</code></pre>
        </ul>
    </section>

    <footer>
        <p>Projet Docker - Documentation générée</p>
    </footer>
</body>
</html>

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages