La configuration de Docker pour une application Web implique la conteneurisation de votre application et de ses dépendances, garantissant des environnements cohérents entre le développement, les tests et la production. Voici un guide général couvrant les composants essentiels :
1. Installer Docker
Tout d'abord, assurez-vous que Docker est installé sur votre système. Vous pouvez télécharger Docker Desktop pour votre système d'exploitation depuis le site officiel de Docker. Pour les outils en ligne de commande sous Linux, utilisez le gestionnaire de paquets de votre distribution (par exemple, sudo apt install docker.io sur Ubuntu).
2. Créer un Dockerfile
Un Dockerfile est un fichier texte contenant des instructions pour que Docker construise une image. Il définit l'environnement, les dépendances et comment exécuter votre application.
Exemple de Dockerfile pour une application Node.js :
# Utiliser une image runtime Node.js officielle comme image parente
FROM node:18-alpine
# Définir le répertoire de travail dans le conteneur
WORKDIR /app
# Copier package.json et package-lock.json (ou yarn.lock)
COPY package*.json ./
# Installer les dépendances de l'application
RUN npm install
# Copier le reste du code de votre application
COPY . .
# Exposer le port sur lequel votre application écoute
EXPOSE 3000
# Définir la commande pour exécuter votre application
CMD [ "npm", "start" ]
Explication des instructions courantes de Dockerfile :
* FROM <image> : Spécifie l'image de base sur laquelle construire.
* WORKDIR /app : Définit le répertoire de travail actuel dans le conteneur.
* COPY <src> <dest> : Copie les fichiers et répertoires de votre machine hôte vers le conteneur.
* RUN <command> : Exécute des commandes pendant le processus de construction de l'image (par exemple, installation de dépendances).
* EXPOSE <port> : Informe Docker que le conteneur écoute sur ce port au moment de l'exécution.
* CMD ["executable", "param1", "param2"] : Spécifie la commande par défaut à exécuter lorsque le conteneur démarre.
3. Construire votre Image Docker
Naviguez vers le répertoire racine de votre projet (où se trouve votre Dockerfile) dans votre terminal et exécutez la commande de construction :
docker build -t your-app-name .
docker build: La commande pour créer une image Docker.-t your-app-name: Étiquette l'image avec un nom (par exemple,my-nodejs-app)..: Spécifie le contexte de construction (le répertoire courant), indiquant à Docker où trouver leDockerfileet les fichiers de l'application.
4. Exécuter votre Conteneur Docker
Une fois l'image construite, vous pouvez créer et exécuter un conteneur à partir de celle-ci.
docker run -p 80:3000 your-app-name
docker run: La commande pour démarrer un conteneur.-p 80:3000: Mappe le port3000à l'intérieur du conteneur (celui sur lequel votre application écoute) au port80sur votre machine hôte. Cela vous permet d'accéder à votre application viahttp://localhost.your-app-name: Le nom de l'image Docker que vous souhaitez exécuter.
Votre application Web s'exécutera maintenant dans un conteneur Docker, accessible via votre navigateur.
5. Utiliser Docker Compose pour les Applications Multi-Services
Pour les applications impliquant plusieurs services (par exemple, une application Web et une base de données), Docker Compose est inestimable. Il utilise un fichier docker-compose.yml pour définir et gérer tous les services.
Exemple de docker-compose.yml pour une application Node.js connectée à un cache Redis :
version: '3.8' # Spécifie la version du format du fichier Compose
services:
web:
build: . # Construire l'image à partir du Dockerfile dans le répertoire courant
ports:
- "3000:3000"
volumes:
- .:/app # Monter le code local pour les rechargements en direct (développement)
environment:
DATABASE_URL: postgresql://user:password@db:5432/mydatabase
depends_on:
- db # S'assurer que la base de données démarre avant le service web
networks:
- app-network
db:
image: postgres:14-alpine # Utiliser une image PostgreSQL pré-construite
environment:
POSTGRES_DB: mydatabase
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- db_data:/var/lib/postgresql/data # Persister les données de la base de données
networks:
- app-network
volumes:
db_data: # Définir le volume nommé
networks:
app-network: # Définir un réseau personnalisé
Pour utiliser Docker Compose, placez le fichier docker-compose.yml à la racine de votre projet et exécutez :
docker compose up -d --build
docker compose up: Construit les images (si--buildest utilisé) et démarre les services.-d: Exécute les conteneurs en mode détaché (en arrière-plan).
Pour arrêter et supprimer les conteneurs, réseaux et volumes :
docker compose down
Cette configuration fournit un environnement reproductible et isolé pour votre application Web, rendant le développement et le déploiement beaucoup plus fluides.