Déploiement d'un serveur web avec Docker
Création d'un Dockerfile
Pour déployer un serveur web à l'aide de Docker, vous devez d'abord créer un Dockerfile. Un Dockerfile est un fichier texte contenant les instructions pour construire une image Docker. Voici un exemple de Dockerfile pour un serveur web Nginx simple :
## Utiliser l'image Nginx officielle comme image de base
FROM nginx:latest
## Copier le fichier de configuration Nginx par défaut
COPY default.conf /etc/nginx/conf.d/default.conf
## Copier le code de l'application web dans le conteneur
COPY app/ /usr/share/nginx/html/
## Exposer le port 80 pour le trafic HTTP
EXPOSE 80
## Démarrer le serveur Nginx
CMD ["nginx", "-g", "daemon off;"]
Ce Dockerfile :
- Utilise l'image Nginx officielle comme image de base.
- Copie le fichier de configuration Nginx par défaut dans le conteneur.
- Copie le code de l'application web dans le répertoire racine web du conteneur.
- Expose le port 80 pour le trafic HTTP.
- Démarre le serveur Nginx.
Construction et exécution de l'image Docker
Une fois que vous avez le Dockerfile, vous pouvez construire l'image Docker à l'aide de la commande docker build :
## Construire l'image Docker
docker build -t my-nginx-server .
Cette commande construit l'image Docker avec l'étiquette my-nginx-server en utilisant le Dockerfile dans le répertoire courant.
Après la construction de l'image, vous pouvez exécuter un conteneur basé sur l'image à l'aide de la commande docker run :
## Exécuter le conteneur Docker
docker run -d -p 80:80 --name my-nginx-server my-nginx-server
Cette commande :
- Exécute le conteneur en mode détaché (
-d).
- Mappe le port 80 de l'hôte au port 80 dans le conteneur (
-p 80:80).
- Attribue le nom
my-nginx-server au conteneur.
- Utilise l'image
my-nginx-server pour créer le conteneur.
Mise à l'échelle et équilibre de charge
Pour mettre à l'échelle votre serveur web, vous pouvez exécuter plusieurs instances du conteneur Docker et utiliser un équilibreur de charge pour distribuer le trafic entre les instances. Voici un exemple de la façon dont vous pouvez le faire à l'aide de Docker Compose :
version: "3"
services:
web:
build: .
ports:
- 80:80
deploy:
replicas: 3
load-balancer:
image: nginx:latest
ports:
- 8080:80
depends_on:
- web
configs:
- source: nginx-config
target: /etc/nginx/conf.d/default.conf
configs:
nginx-config:
file: ./nginx.conf
Ce fichier Docker Compose :
- Construit le service
web en utilisant le Dockerfile dans le répertoire courant.
- Déploie trois répliques du service
web.
- Exécute un service d'équilibreur de charge Nginx qui écoute sur le port 8080 et redirige le trafic vers les instances du service
web.
- Monte un fichier de configuration Nginx personnalisé dans le conteneur d'équilibreur de charge.
En utilisant Docker Compose et l'équilibrage de charge, vous pouvez facilement mettre à l'échelle votre serveur web et garantir une haute disponibilité et une tolérance aux pannes.