Sur votre VM Linux, créez-vous un répertoire “DockerCompose” sur une VM Linux et créez-vous un fichier docker-compose.yaml à la racine de ce répertoire.
Créer les répertoires nginx, backend et créé les fichiers suivants :
consthttp=require('http');
constmysql=require('mysql2/promise');
// Configuration de la connexion avec les variables du docker-compose
constdbConfig= {
host:process.env.DB_HOST||'db',
user:process.env.DB_USER||'userMysql',
password:process.env.DB_PASS||'password_Mysql',
database:process.env.DB_NAME||'database_Name'};
asyncfunctioninitDB() {
try {
constconnection=awaitmysql.createConnection(dbConfig);
// Création d'une table simple si elle n'existe pas
awaitconnection.query(`
CREATE TABLE IF NOT EXISTS visites (
id INT AUTO_INCREMENT PRIMARY KEY,
date_visite DATETIME DEFAULT CURRENT_TIMESTAMP
)
`);
awaitconnection.end();
console.log('Base de données initialisée avec succès.');
} catch (err) {
console.error('Erreur lors de l\'initialisation de la DB:', err.message);
}
}
// Initialiser la DB au démarrage
initDB();
constserver=http.createServer(async (req, res) => {
res.writeHead(200, { 'Content-Type':'text/html; charset=utf-8' });
try {
constconnection=awaitmysql.createConnection(dbConfig);
// 1. Insérer une nouvelle visite
awaitconnection.query('INSERT INTO visites () VALUES ()');
// 2. Compter le nombre total de visites
const [rows] =awaitconnection.query('SELECT COUNT(*) AS total FROM visites');
consttotalVisites=rows[0].total;
awaitconnection.end();
// Réponse HTML montrant le flux : Navigateur -> Nginx -> Node.js -> MySQL
res.end(`
<h1>Démonstration Architecture 3-Tiers</h1>
<p><b>Nginx</b> a reçu la requête et l'a transmise à <b>Node.js</b>.</p>
<p><b>Node.js</b> vient d'enregistrer la visite dans <b>MySQL</b> !</p>
<h2>Nombre total de visites enregistrées en base : ${totalVisites}</h2>
`);
} catch (err) {
res.end(`<h1>Erreur de connexion à MySQL</h1><p>${err.message}</p>`);
}
});
// Écoute sur 0.0.0.0
server.listen(3000, '0.0.0.0', () => {
console.log('Serveur Node.js démarré sur le port 3000');
});
Lire l’exemple et tous les commentaires du Docker compose qui se trouve sur la page sur le Docker Compose
Copier le contenu dans le fichier “docker-compose.yaml” et exécutez le Docker Compose