Contactez-nous

Exercice 2 : dockeriser une application 'Hello World'

Apprenez à dockeriser votre première application simple (Python/Flask ou Node/Express) avec ce guide pas à pas : code, Dockerfile, build, run et test.

Passer de consommateur à créateur d'images Docker

Dans l'exercice précédent, nous avons utilisé une image Docker préexistante, celle de Nginx, pour déployer rapidement un service standard. C'est un cas d'usage très fréquent, mais la véritable puissance de Docker se révèle lorsque vous commencez à empaqueter vos propres applications. C'est précisément l'objectif de ce second exercice : vous guider dans le processus de "dockerisation" d'une application simple.

Qu'entend-on par "dockeriser" ? Il s'agit de créer une image Docker personnalisée qui contient votre application, toutes ses dépendances (librairies, runtimes, etc.), ainsi que les instructions nécessaires pour l'exécuter correctement. Le résultat est un artefact portable et autonome que vous pouvez exécuter de manière cohérente sur n'importe quelle machine disposant de Docker.

Nous allons nous concentrer sur une application très basique, de type "Hello World", typiquement un petit serveur web qui affiche un message simple. L'intérêt de commencer par une application simple est de pouvoir se concentrer sur le processus de dockerisation lui-même, sans être distrait par la complexité de l'application.

Les ingrédients clés : code source et Dockerfile

Pour dockeriser notre application "Hello World", nous aurons besoin de deux éléments principaux. Le premier est, bien sûr, le code source minimal de l'application elle-même. Nous fournirons des exemples simples, soit en Python avec le micro-framework Flask, soit en Node.js avec le framework Express. Ces exemples sont volontairement réduits à l'essentiel pour illustrer le concept.

Le second élément, et c'est le coeur de la dockerisation, est le fichier `Dockerfile`. Ce fichier texte contient une série d'instructions que Docker suivra pour construire l'image. Il spécifiera l'image de base à utiliser (par exemple, une image Python ou Node.js officielle), comment copier le code de notre application dans l'image, comment installer les dépendances nécessaires, quel port exposer et quelle commande exécuter au démarrage du conteneur.

La création de ce `Dockerfile` est une étape cruciale. C'est là que vous définissez l'environnement d'exécution de votre application de manière déclarative et reproductible. Nous verrons les instructions fondamentales (`FROM`, `WORKDIR`, `COPY`, `RUN`, `EXPOSE`, `CMD`) en action dans un contexte pratique.

Le flux de travail : de l'écriture à l'exécution

Cet exercice vous guidera à travers le flux de travail complet de la dockerisation. Nous commencerons par écrire le code source très simple de notre application "Hello World". Ensuite, nous créerons le `Dockerfile` associé, en expliquant chaque instruction utilisée.

Une fois le code et le Dockerfile prêts, nous utiliserons la commande `docker build` pour demander à Docker de lire le Dockerfile et de construire notre image personnalisée. Cette étape générera un artefact immuable contenant notre application et son environnement.

Enfin, nous utiliserons la commande `docker run`, comme dans l'exercice précédent, mais cette fois en utilisant notre propre image fraîchement construite. Nous lancerons un conteneur basé sur cette image et effectuerons un test simple (par exemple, en accédant à l'application via le navigateur ou `curl`) pour vérifier que notre application "Hello World" s'exécute correctement à l'intérieur du conteneur. Ce cycle complet (Code -> Dockerfile -> Build -> Run -> Test) est fondamental dans le développement basé sur Docker.