Ce projet met en place deux environnements PHP distincts sous Docker, permettant de faire coexister des applications nécessitant différentes versions de PHP.
- Environnement PHP 5.6 avec Nginx
- Port d'accès : 8090
- Extensions PHP activées :
- mysqli
- pdo
- intl
- Environnement PHP 8.1 moderne avec Nginx
- Port d'accès : 8091
- Extensions PHP activées :
- mysqli
- pdo
- pdo_mysql
- intl
- sqlsrv (version 5.10.1)
- pdo_sqlsrv (version 5.10.1)
- Microsoft ODBC Driver 17 pour SQL Server
- Extensions PHP SQL Server :
- sqlsrv version 5.10.1
- pdo_sqlsrv version 5.10.1
- Configuration TLS/SSL incluse
- Support complet des fonctionnalités SQL Server 2008 R2 et versions ultérieures
.
├── docker-compose.yml
├── nginx/
│ ├── nginx-projet1.conf # Configuration Nginx pour PHP 5.6
│ └── nginx-projet2.conf # Configuration Nginx pour PHP 8.1
├── php56.Dockerfile
├── php81.Dockerfile
├── Makefile
└── www/
├── projet1/ # Application PHP 5.6
│ └── index.php
└── projet2/ # Application PHP 8.1
└── index.php
- Installer WSL2 (Windows Subsystem for Linux)
wsl --install
- Télécharger et installer Docker Desktop depuis le site officiel
- Lancer Docker Desktop et s'assurer qu'il utilise WSL2
- Installer Docker
# Mettre à jour le système
sudo apt-get update
# Installer les prérequis
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
# Ajouter la clé GPG officielle de Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Configurer le repository stable
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Installer Docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# Ajouter l'utilisateur au groupe docker
sudo usermod -aG docker $USER
- Installer Docker Compose
# Télécharger la dernière version de Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# Rendre le binaire exécutable
sudo chmod +x /usr/local/bin/docker-compose
Le Makefile inclut les commandes suivantes :
# Démarrer tous les services
make up
# Arrêter tous les services
make down
# Reconstruire les images et redémarrer les services
make rebuild
# Afficher les logs
make logs-php56 # Logs du conteneur PHP 5.6
make logs-php81 # Logs du conteneur PHP 8.1
make logs-nginx1 # Logs du serveur Nginx (projet 1)
make logs-nginx2 # Logs du serveur Nginx (projet 2)
# Accéder aux shells des conteneurs
make shell-php56 # Shell PHP 5.6
make shell-php81 # Shell PHP 8.1
make shell-nginx1 # Shell Nginx (projet 1)
make shell-nginx2 # Shell Nginx (projet 2)
# Nettoyer complètement l'environnement
make clean
- Projet PHP 5.6 : http://localhost:8090
- Projet PHP 8.1 : http://localhost:8091
Modifier le fichier www/projet2/index.php
avec vos paramètres de connexion :
$serverName = "your_server_name";
$connectionOptions = array(
"Database" => "your_database",
"Uid" => "your_username",
"PWD" => "your_password",
"TrustServerCertificate" => true
);
Pour une réinitialisation complète de l'environnement :
make clean
make up
Cette commande supprimera tous les conteneurs, images et volumes associés avant de reconstruire l'environnement.