Déployer un serveur web avec Docker
Dans ce chapitre, nous allons explorer le processus de création et de déploiement d'un serveur web simple en utilisant Docker. Notre serveur web comprendra trois composants principaux : PHP 8, Nginx et PostgreSQL. Nous utiliserons Dockerfiles pour construire des images personnalisées, Docker Compose pour orchestrer nos conteneurs, et les volumes Docker pour gérer les données persistantes.
Préparation des Dockerfiles
Nous aurons besoin de trois Dockerfiles: un pour PHP, un pour Nginx et un pour PostgreSQL.
Dockerfile pour PHP 8 :
Nom du fichier : Dockerfile-php
FROM php:8-fpm-alpine
# Installer les extensions PHP nécessaires pour la connexion à PostgreSQL
RUN apk --update --no-cache add \
postgresql-dev \
&& docker-php-ext-install pdo pdo_pgsql
# Copiez les fichiers du site web
COPY . /var/www/html
# Définir le répertoire de travail
WORKDIR /var/www/html
Dockerfile pour Nginx :
Nom du fichier : Dockerfile-nginx
FROM nginx:alpine
# Copier la configuration de Nginx
COPY nginx.conf /etc/nginx/conf.d/default.conf
# Copiez les fichiers du site web
COPY . /var/www/html
# Définir le répertoire de travail
WORKDIR /var/www/html
Nom du fichier : nginx.conf
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Créer le Docker Compose File
Créons un fichier docker-compose.yml
pour définir nos services, réseaux et volumes.
version: '3.8'
services:
php:
build:
context: .
dockerfile: Dockerfile-php
volumes:
- web_data:/var/www/html
nginx:
build:
context: .
dockerfile: Dockerfile-nginx
ports:
- "8080:80"
depends_on:
- php
db:
image: postgres
environment:
POSTGRES_DB: mydatabase
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- db_data:/var/lib/postgresql/data
volumes:
web_data:
db_data:
Créer tous les fichiers à la racine de votre projet et ajouter un fichier index.php
avec du contenu dedans, par exemple :
<h1>Ça fonctionne !</h1>
Lancement des Conteneurs en Mode Détaché
Avec Docker Compose, lancer vos conteneurs en mode détaché (en arrière-plan) est simple. Utilisez la commande suivante :
docker-compose up -d
L'option -d
indique à Docker Compose de démarrer les conteneurs en mode détaché. Vos conteneurs seront maintenant lancés, et vos services seront accessibles.
Accès et test
Après le déploiement, accédez à votre serveur web en naviguant vers l'adresse IP de votre machine sur votre navigateur suivi du port 8080
: http://localhost:8080
. Vous devriez voir votre application PHP fonctionner, connectée à la base de données PostgreSQL, servie via Nginx et le contenu de votre fichier index.php
s'afficher.
Modifications
Si vous apporter des modifications aux fichiers de configuration alors que les containers sont lancés, utiliser les commandes suivantes pour appliquer vos modifications :
docker-compose down
docker-compose build
docker-compose up -d