Maison >Périphériques technologiques >Industrie informatique >La profondeur fonctionnelle de Docker et Docker composent

La profondeur fonctionnelle de Docker et Docker composent

Lisa Kudrow
Lisa Kudroworiginal
2025-02-08 09:06:11726parcourir

The Functional Depth of Docker and Docker Compose

Créer une application FLASK multi-continents à l'aide du registre des conteneurs Docker Compose et Vultr

Docker Compose permet aux utilisateurs d'exécuter et de définir les applications multi-container à l'aide d'un seul fichier de configuration. Il simplifie le processus de configuration et de gestion de plusieurs conteneurs, ce qui facilite le développement, le test et le déploiement des applications. Cet article vous guidera pour créer une application Flask avec deux conteneurs, gérer les images Docker de votre application à l'aide du registre des conteneurs Vultr (VCR) et gérer plusieurs conteneurs avec la fonctionnalité multi-container de Docker Compose.

Création de l'échantillon d'application

Les étapes suivantes vous guideront pour créer un exemple d'application:

  1. Déployez une instance de calcul Vultr à l'aide de l'application Docker Market via le portail client Vultr.

  2. Utilisez SSH pour accéder solidement au serveur avec des utilisateurs non ROOT sudo.

  3. Mettez à jour le serveur.

  4. Créez un nouveau répertoire de projet et entrez-le:

    <code class="language-bash">mkdir flask-redis-example
    cd flask-redis-example</code>
  5. Créez un nouveau fichier nommé app.py:

    <code class="language-bash">nano app.py</code>
  6. Ajouter le code suivant:

    <code class="language-python">from flask import Flask, render_template
    import redis
    
    app = Flask(__name__)
    redis_client = redis.Redis(host='redis', port=6379)
    
    @app.route('/')
    def hello():
        count = redis_client.incr('hits')
        return render_template('index.html', count=count)
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=5000)</code>

    Enregistrer et quitter le fichier. Ce code FLASK se connecte à la base de données Redis et incrémente le compteur à chaque fois que l'URL racine est accessible.

  7. Autoriser les connexions entrantes au port 5000 et recharger le pare-feu:

    <code class="language-bash">sudo ufw allow 5000
    sudo ufw reload</code>
  8. Créez un nouveau fichier nommé requirements.txt:

    <code class="language-bash">nano requirements.txt</code>
  9. Ajouter le package suivant:

    <code>flask
    redis</code>

    Enregistrer et fermer le fichier.

  10. Créez un autre répertoire dans le répertoire flask-redis-example et entrez-le:

    <code class="language-bash"> mkdir static
     cd static</code>
  11. Créez un nouveau fichier nommé styles.css:

    <code class="language-bash"> nano styles.css</code>
  12. Ajouter le code suivant:

    <code class="language-css"> body {
         font-family: Arial, sans-serif;
         text-align: center;
         background-color: #f4f4f4;
         margin: 0;
         padding: 0;
     }
    
     h1 {
         color: #333;
         margin-top: 50px;
     }
    
     p {
         font-size: 18px;
         color: #666;
     }</code>

    Enregistrer et quitter le fichier.

  13. Créez un autre répertoire dans le répertoire flask-redis-example et entrez-le:

    <code class="language-bash"> mkdir templates
     cd templates</code>
  14. Créez un nouveau fichier nommé index.html:

    <code class="language-bash"> nano index.html</code>
  15. Ajouter le code suivant:

    <code class="language-html"> <!DOCTYPE html>
     
     
         <title>Flask App</title>
         <link rel="stylesheet" href="%7B%7B%20url_for('static',%20filename='styles.css')%20%7D%7D">
     
     
         <h1>Hello, World!</h1>
         <p>I have been seen {{ count }} times.</p>
     
     </code>

    Enregistrer et quitter le fichier.

Utilisation du registre des conteneurs Vultr

Dans cette section, vous allez créer un registre de conteneurs Vultr, télécharger votre image Docker dans le registre et configurer un fichier Docker Compose pour configurer les services des bases de données FLASK et Redis.

  1. Déployez un registre de conteneurs Vultr.

  2. Créer un manifeste docker dans le répertoire flask-redis-example:

    <code class="language-bash">nano Dockerfile.flask</code>
  3. Ajouter la configuration suivante:

    <code class="language-dockerfile">FROM python:3.9-slim
    
    WORKDIR /app
    
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    
    COPY app.py .
    COPY static/ ./static/
    COPY templates/ ./templates/
    
    EXPOSE 5000
    
    CMD ["python", "app.py"]</code>

    Enregistrer et quitter le fichier.

  4. Build Docker Image:

    <code class="language-bash">docker build -t flask-app .</code>
  5. Connectez-vous à votre registre de conteneurs Vultr:

    <code class="language-bash">docker login <url> -u <user> -p <password></password></user></url></code>

    Assurez-vous de remplacer <url></url>, <user></user> et <password></password>, qui sont fournis dans la section Présentation de votre registre de conteneurs Vultr.

  6. Image de docker de balise:

    <code class="language-bash">mkdir flask-redis-example
    cd flask-redis-example</code>
  7. Pusing le miroir au registre des conteneurs Vultr:

    <code class="language-bash">nano app.py</code>

    Après avoir poussé l'image Docker, vérifiez que l'image existe dans la section "référentiel" du registre des conteneurs Vultr sur le tableau de bord Vultr.

  8. Créez un nouveau fichier nommé docker-compose.yaml:

    <code class="language-python">from flask import Flask, render_template
    import redis
    
    app = Flask(__name__)
    redis_client = redis.Redis(host='redis', port=6379)
    
    @app.route('/')
    def hello():
        count = redis_client.incr('hits')
        return render_template('index.html', count=count)
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=5000)</code>

    Enregistrer et quitter le fichier. La configuration YAML ci-dessus définit deux services web et redis. Le service web construit l'application FLASK à partir du répertoire actuel (.) Et cartographie le port 5000 du conteneur au port de l'hôte 5000. Il spécifie également que le service web dépend du service redis. redis Le service utilise l'image officielle de Redis Docker de Docker Hub.

  9. Build Docker Compose Fichier:

    <code class="language-bash">sudo ufw allow 5000
    sudo ufw reload</code>

    Une fois le processus de construction terminé, visitez l'application FLASK sur http: // : 5000. Essayez de rafraîchir le site Web plusieurs fois et observez si le nombre de visites de pages augmente.

Plus d'utilisation du registre des conteneurs Vultr

  • Registre des conteneurs Vultr avec docker
  • Registre des conteneurs Vultr avec Kubernetes
  • Build Image de conteneur Vllm
  • Build Llama.cpp Image du conteneur
  • Créer une image de conteneur Pytorch

Best Practice

  • Gardez docker-compose.yaml Les fichiers sont bien organisés et bien documentés.
  • Utiliser des volumes nommés pour persister des données au lieu de lier le répertoire hôte.
  • Utiliser des variables d'environnement pour stocker des données sensibles telles que les mots de passe et les clés API.
  • Utilisez les commandes intégrées de Docker Compose, telles que docker-compose up, docker-compose down, et docker-compose ps pour gérer les conteneurs.

Conclusion

Dans cet article, vous avez créé une application FLASK avec deux conteneurs, utilisé le registre des conteneurs Vultr pour gérer l'image Docker de l'application et profité de la fonctionnalité multi-container de Docker Compose pour gérer plusieurs conteneurs.

Cet article est parrainé par Vultr. Vultr est la plus grande plate-forme de cloud computing privée au monde. Favorite parmi les développeurs, Vultr a fourni des solutions mondiales de cloud computing flexibles et évolutives, du GPU cloud, des métaux nus et du stockage de cloud à plus de 1,5 million de clients dans 185 pays. En savoir plus sur Vultr

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn