Démarrer avec Docker : conteneuriser votre première application
Docker est souvent la première brique que l'on rencontre en DevOps. Il permet d'empaqueter une application avec toutes ses dépendances dans une unité portable : le conteneur. Dans cet article, on part de zéro pour lancer une première application conteneurisée.
Image vs conteneur
Deux notions à ne pas confondre :
- Image : un modèle immuable (le « gabarit ») contenant votre application et son environnement.
- Conteneur : une instance en cours d'exécution d'une image.
On construit une image une fois, puis on démarre autant de conteneurs que nécessaire à partir de celle-ci.
Un premier Dockerfile
Prenons une petite application Node.js. À la racine du projet, créez un fichier Dockerfile :
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
Quelques bonnes pratiques déjà présentes ici :
- une image de base légère (
alpine) ; - on copie d'abord
package*.jsonpour profiter du cache des couches lors des builds suivants ; - on n'installe que les dépendances de production.
Construire et lancer
# Construire l'image
docker build -t mon-app:1.0 .
# Lancer un conteneur
docker run -d -p 3000:3000 --name mon-app mon-app:1.0
Votre application est maintenant accessible sur http://localhost:3000. Pour inspecter ce qui tourne :
docker ps # conteneurs actifs
docker logs mon-app # logs de l'application
Et ensuite ?
Une fois cette base acquise, les étapes naturelles sont :
- Docker Compose pour orchestrer plusieurs services (app + base de données) ;
- le passage à Kubernetes quand il faut monter en charge ;
- l'intégration dans un pipeline CI/CD pour builder et publier vos images automatiquement.
On couvre chacun de ces sujets en profondeur dans les cours InSkillOps. Bon build !