đ CrĂ©ation dâune Image Docker : Un Cas Concret
Dans cet exemple, nous allons empaqueter une application web simple en Node.js dans une image Docker afin de lâexĂ©cuter dans un conteneur. Lâobjectif est de standardiser le dĂ©ploiement en encapsulant lâapplication et toutes ses dĂ©pendances dans une image reproductible.
đŠ LâApplication Node.js
Supposons que notre application est un serveur Node.js qui affiche âHello, Docker!â sur le port 3000. La structure du projet est la suivante :
import { FileTree } from 'nextra/components'
<FileTree>
<FileTree.Folder name="app" defaultOpen>
<FileTree.File name="app.js" />
<FileTree.File name="package.json" />
</FileTree.Folder>
</FileTree>
app.js
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, Docker!');
});
app.listen(3000, () => {
console.log('App is running on port 3000');
});
package.json
{
"name": "docker-node-app",
"version": "1.0.0",
"main": "app.js",
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "^4.17.1"
}
}
đ§ Ăcriture du Dockerfile
Le Dockerfile est la ârecetteâ qui permet de construire lâimage Docker. Voici un exemple de Dockerfile pour notre application Node.js :
# Ătape 1 : Utiliser une image de base lĂ©gĂšre avec Node.js
FROM node:14-alpine
# Ătape 2 : DĂ©finir le rĂ©pertoire de travail dans le conteneur
WORKDIR /app
# Ătape 3 : Copier le fichier package.json et installer les dĂ©pendances
COPY package.json ./
RUN npm install
# Ătape 4 : Copier le reste du code source de l'application
COPY . .
# Ătape 5 : Exposer le port 3000 pour accĂ©der Ă l'application
EXPOSE 3000
# Ătape 6 : DĂ©finir la commande pour dĂ©marrer l'application
CMD ["npm", "start"]
Explications :
FROM node:14-alpine
: Utilise une image de base légÚre avec Node.js (version 14) sur Alpine Linux.WORKDIR /app
: DĂ©finit/app
comme répertoire de travail dans le conteneur.COPY package.json ./
etRUN npm install
: Installe les dĂ©pendances de lâapplication.COPY . .
: Copie lâensemble du code source dans le conteneur.EXPOSE 3000
: Rend le port 3000 accessible de lâextĂ©rieur.CMD ["npm", "start"]
: Lance lâapplication lors du dĂ©marrage du conteneur.
đ ïž Construction de lâImage Docker
Pour construire lâimage Docker, placez-vous dans le rĂ©pertoire contenant le Dockerfile et exĂ©cutez la commande suivante :
docker build -t my-node-app .
DĂ©tails :
-t my-node-app
: Tag (nom) de lâimage crĂ©Ă©e..
: Indique que le contexte de build est le répertoire courant.
Docker lira le Dockerfile, exĂ©cutera chaque instruction et gĂ©nĂ©rera une image contenant lâapplication Node.js.
đ ExĂ©cution de lâImage Docker
Pour lancer un conteneur Ă partir de lâimage crĂ©Ă©e, utilisez :
docker run -d -p 3000:3000 my-node-app
Explications :
-d
: Lance le conteneur en mode détaché (en arriÚre-plan).-p 3000:3000
: Mappe le port 3000 du conteneur au port 3000 de lâhĂŽte.my-node-app
: Nom de lâimage Ă utiliser.
Une fois le conteneur en cours dâexĂ©cution, ouvrez votre navigateur et rendez-vous sur http://localhost:3000â pour voir lâapplication afficher âHello, Docker!â.
đ RĂ©sumĂ©
- Dockerfile : Automatisation de la crĂ©ation dâune image Docker pour une application Node.js.
- Images Docker : Permettent dâencapsuler une application avec toutes ses dĂ©pendances pour garantir une exĂ©cution uniforme sur tout environnement.
- Conteneurs : Instances isolĂ©es dâune image qui sâexĂ©cutent de maniĂšre reproductible, quel que soit lâenvironnement (dev, test, prod).
Cette approche vous permet de standardiser et simplifier le dĂ©ploiement dâapplications en crĂ©ant des images Docker, garantissant ainsi une exĂ©cution cohĂ©rente et fiable sur nâimporte quelle machine oĂč Docker est installĂ©. đ