Maison > développement back-end > Tutoriel Python > Optimisation des fichiers Dockerfile Flask : meilleures pratiques pour les DevOps et les développeurs

Optimisation des fichiers Dockerfile Flask : meilleures pratiques pour les DevOps et les développeurs

DDD
Libérer: 2025-01-05 16:10:42
original
513 Les gens l'ont consulté

? Introduction

Bienvenue dans le monde du DevOps ! ? Aujourd'hui, nous abordons une compétence essentielle pour tout ingénieur DevOps : l'optimisation des Dockerfiles pour les applications Flask. Alors que les ingénieurs DevOps débutants se concentrent souvent sur la maîtrise de la syntaxe de base des Dockerfile, les ingénieurs expérimentés savent que la véritable expertise réside dans l'optimisation, en créant des Dockerfiles efficaces, sécurisés et prêts pour la production.

Dans ce blog, nous expliquerons le processus de création d'une application Flask simple. Tout d’abord, nous allons créer un Dockerfile de base, puis nous l’affinerons en une version optimisée, en comparant les deux pour comprendre la différence. Que vous soyez débutant ou que vous cherchiez à perfectionner vos compétences Dockerfile, ce guide a quelque chose pour tout le monde.

Commençons ! ?️


? Pré-requis

Avant de nous lancer dans l'écriture et l'optimisation de Dockerfiles pour une application Flask, assurez-vous d'avoir les conditions préalables suivantes en place :

  1. Compréhension de base du flacon

    La familiarité avec la création d'une application Flask simple vous aidera à suivre de manière transparente.

  2. Docker installé

    Assurez-vous que Docker est installé et exécuté sur votre système. Vous pouvez le télécharger depuis le site Docker.

  3. Configuration de l'environnement Python

    Python 3.x installé sur votre système, avec pip pour la gestion des packages Python.

  4. Éditeur de code

    Utilisez n'importe quel éditeur de code de votre choix, tel que Visual Studio Code, PyCharm ou Sublime Text.

  5. Flacon installé

    Installez Flask dans votre environnement Python à l'aide de la commande :

   pip install flask
Copier après la connexion
Copier après la connexion
  1. Exemple d'application de flacon Préparez une application Flask simple ou préparez-vous à en créer une au fur et à mesure que nous procédons dans le didacticiel.

? Création de l'application Flask

Pour commencer, nous allons créer une application Flask simple et la préparer pour la conteneurisation. Suivez ces étapes :

  1. Créer le répertoire du projet

    Créez un répertoire nommé basic-flask et accédez-y.

  2. Créer l'application Flask

    Dans le répertoire basic-flask, créez un fichier nommé app.py avec le contenu suivant :

   from flask import Flask

   app = Flask(__name__)

   @app.route("/")
   def HelloWorld():
       return "Hello World"

   if __name__ == "__main__":
       app.run()
Copier après la connexion
Copier après la connexion

Vous pouvez exécuter cette application à l'aide de la commande :

   python3 app.py
Copier après la connexion
Copier après la connexion

Ouvrez votre navigateur et accédez à http://localhost:5000. Vous devriez voir Hello World affiché sur la page Web.

Optimising Flask Dockerfiles: Best Practices for DevOps and Developers

  1. Liste des dépendances Pour conteneuriser l'application, nous devons d'abord spécifier les modules Python requis. Créez un fichier exigences.txt en exécutant :
   pip install flask
Copier après la connexion
Copier après la connexion

? Création de fichiers Docker

Maintenant, créons deux versions de Dockerfiles : une version de base et une version optimisée.

Fichier Docker de base

Le Dockerfile de base est simple mais manque d'optimisations d'efficacité et de sécurité :

   from flask import Flask

   app = Flask(__name__)

   @app.route("/")
   def HelloWorld():
       return "Hello World"

   if __name__ == "__main__":
       app.run()
Copier après la connexion
Copier après la connexion

Ce Dockerfile est fonctionnel mais laisse place à des améliorations en matière de mise en cache, d'optimisation de la taille et de pratiques de sécurité.

Fichier Docker optimisé

Le Dockerfile optimisé suit des builds en plusieurs étapes et intègre les meilleures pratiques en matière d'efficacité, de sécurité et de modularité :

   python3 app.py
Copier après la connexion
Copier après la connexion

? Construire les fichiers Docker

Maintenant que nous avons créé les deux fichiers Docker, il est temps de créer des images Docker et d'observer les différences de tailles. Suivez ces étapes :

Créer l'image à partir du fichier Docker de base

  1. Assurez-vous que le contenu du Dockerfile de base est enregistré dans un fichier nommé Dockerfile.
  2. Construisez l'image à l'aide de la commande suivante :
   pip3 freeze > requirements.txt
Copier après la connexion

Optimising Flask Dockerfiles: Best Practices for DevOps and Developers

Créer l'image à partir du fichier Docker optimisé

  1. Enregistrez le contenu du Dockerfile optimisé dans un fichier séparé nommé Dockerfile.
  2. Construisez l'image à l'aide de cette commande :
FROM python:3.9-slim

WORKDIR /app

COPY . /app

RUN pip install -r requirements.txt

CMD ["python3", "app.py"]
Copier après la connexion

Optimising Flask Dockerfiles: Best Practices for DevOps and Developers

Comparez les images construites

Une fois les images construites, répertoriez toutes les images Docker en utilisant :

# syntax=docker/dockerfile:1.4

# Stage 1: Build dependencies
FROM --platform=$BUILDPLATFORM python:3.10-alpine AS builder

WORKDIR /code

# Install build dependencies and cache pip files for efficiency
COPY requirements.txt /code
RUN --mount=type=cache,target=/root/.cache/pip \
    pip3 install --prefix=/install -r requirements.txt

COPY . /code

# Stage 2: Development environment setup
FROM python:3.10-alpine AS dev-envs

WORKDIR /code

# Copy application files and installed dependencies
COPY --from=builder /install /usr/local
COPY . /code

# Install additional tools for development (e.g., Git, Bash)
RUN apk update && apk add --no-cache git bash

# Create a non-root user for better security
RUN addgroup -S docker && \
    adduser -S --shell /bin/bash --ingroup docker vscode

# Set entrypoint and command for development purposes
ENTRYPOINT ["python3"]
CMD ["app.py"]

# Stage 3: Production-ready image
FROM python:3.10-alpine AS final

WORKDIR /app

# Copy only necessary application files and dependencies
COPY --from=builder /install /usr/local
COPY app.py /app

ENTRYPOINT ["python3"]
CMD ["app.py"]
Copier après la connexion

Optimising Flask Dockerfiles: Best Practices for DevOps and Developers

Vous devriez remarquer une différence significative dans la taille des images :

  • Image Dockerfile de base : Environ 177 Mo
  • Image Dockerfile optimisée : Environ 59,2 Mo

Pourquoi l'image optimisée est plus petite

  • Image de base légère : Le Dockerfile optimisé utilise python:3.10-alpine, qui est nettement plus petit que python:3.9-slim.
  • Construction en plusieurs étapes : Les dépendances de construction inutiles sont exclues de l'image finale, la gardant ainsi minimale.
  • Mise en cache efficace : L'utilisation de la mise en cache pour les installations pip évite les téléchargements redondants et réduit les couches d'images.

? Conclusion

L'optimisation des Dockerfiles est une compétence cruciale pour les ingénieurs DevOps visant à créer des conteneurs efficaces, sécurisés et prêts pour la production. Dans ce blog, nous avons exploré comment créer une application Flask simple, la conteneuriser à l'aide d'un Dockerfile de base, puis l'affiner avec un Dockerfile optimisé.

Les différences de taille et de structure des images démontrent l'impact des meilleures pratiques telles que l'utilisation de builds en plusieurs étapes, d'images de base légères et de mécanismes de mise en cache. Alors que le Dockerfile de base a rempli son objectif, la version optimisée a fourni un conteneur plus simple, plus sécurisé et plus performant, soulignant l'importance d'une conception réfléchie dans la conteneurisation.

Alors que vous poursuivez votre parcours DevOps, efforcez-vous toujours d'améliorer vos fichiers Dockerfiles en intégrant des optimisations, en tenant compte de la sécurité et en minimisant les frais généraux. Un Dockerfile bien optimisé permet non seulement d'économiser du temps et des ressources, mais garantit également des déploiements plus fluides et une évolutivité en production.

C'est maintenant à votre tour : essayez d'appliquer ces techniques à vos propres projets et voyez la différence que fait l'optimisation ! ?

? Pour un blog plus informatif, suivez-moi sur Hashnode, X(Twitter) et LinkedIn.

Bon codage et automatisation ! ?

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!

source:dev.to
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal