Demarrage Automatique
Cette page explique comment configurer le demarrage automatique de PCH-SIG au boot du serveur.
Architecture de demarrage
Au redemarrage du serveur Windows :
Boot Windows
│
▼
Tache planifiee "PCH-SIG Docker Startup"
│
▼
Script start-docker.ps1
│
▼
Docker Machine demarre
│
▼
VM VirtualBox demarre
│
▼
Conteneurs Docker redemarrent (restart: always)
│
▼
Application disponible (~2-3 min apres boot)
Configuration des conteneurs
docker-compose.yml
Tous les conteneurs ont restart: always :
services:
postgres:
restart: always
redis:
restart: always
backend:
restart: always
frontend:
restart: always
Cela garantit que les conteneurs redemarrent automatiquement quand Docker demarre.
Script de demarrage
start-docker.ps1
Fichier : C:\pch-sig\start-docker.ps1
# Script de demarrage Docker Machine pour PCH-SIG
# Execute au boot du serveur via tache planifiee
$LogFile = "C:\pch-sig\logs\startup.log"
function Write-Log {
param([string]$Message)
$Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
"$Timestamp - $Message" | Out-File -Append $LogFile
}
Write-Log "=== Demarrage PCH-SIG ==="
# Attendre que le reseau soit disponible
Write-Log "Attente du reseau..."
Start-Sleep -Seconds 30
# Verifier si Docker Machine est demarre
$status = docker-machine status default 2>&1
Write-Log "Statut Docker Machine: $status"
if ($status -ne "Running") {
Write-Log "Demarrage de Docker Machine..."
docker-machine start default
# Attendre le demarrage complet
Start-Sleep -Seconds 60
$status = docker-machine status default
Write-Log "Nouveau statut: $status"
}
# Configurer l'environnement Docker
Write-Log "Configuration de l'environnement Docker..."
& docker-machine env default | Invoke-Expression
# Verifier les conteneurs
Write-Log "Verification des conteneurs..."
$containers = docker ps --format "{{.Names}}: {{.Status}}"
Write-Log "Conteneurs: $containers"
# Configurer les ports proxy
Write-Log "Configuration des ports proxy..."
netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=80 connectaddress=192.168.99.100
netsh interface portproxy add v4tov4 listenport=8000 listenaddress=0.0.0.0 connectport=8000 connectaddress=192.168.99.100
Write-Log "=== Demarrage termine ==="
Tache planifiee Windows
Creer la tache
# Creer la tache planifiee
$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-ExecutionPolicy Bypass -File C:\pch-sig\start-docker.ps1"
$Trigger = New-ScheduledTaskTrigger -AtStartup
$Principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable
Register-ScheduledTask -TaskName "PCH-SIG Docker Startup" -Action $Action -Trigger $Trigger -Principal $Principal -Settings $Settings -Description "Demarre Docker Machine et les conteneurs PCH-SIG au boot"
Verifier la tache
Get-ScheduledTask -TaskName "PCH-SIG Docker Startup"
Executer manuellement
Start-ScheduledTask -TaskName "PCH-SIG Docker Startup"
Supprimer la tache
Unregister-ScheduledTask -TaskName "PCH-SIG Docker Startup" -Confirm:$false
Verification du demarrage
Consulter les logs
Get-Content C:\pch-sig\logs\startup.log -Tail 50
Verifier les services
Apres redemarrage du serveur :
# Verifier Docker Machine
docker-machine status default
# Verifier les conteneurs
docker-machine ssh default "docker ps"
# Verifier les ports
netsh interface portproxy show all
Tester l'application
# Test frontend
Invoke-WebRequest -Uri "http://localhost:3000" -UseBasicParsing | Select-Object StatusCode
# Test API
Invoke-WebRequest -Uri "http://localhost:8000/api" -UseBasicParsing | Select-Object StatusCode
Depannage
Docker Machine ne demarre pas
# Verifier VirtualBox
& "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" list vms
# Demarrer manuellement
docker-machine start default
Conteneurs ne demarrent pas
# Verifier les logs
docker-machine ssh default "docker logs pch_backend"
# Redemarrer les conteneurs
docker-machine ssh default "cd /c/pch-sig/deploy && docker compose restart"
Ports non accessibles
# Reconfigurer les ports
netsh interface portproxy reset
# Reajouter les redirections
netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=80 connectaddress=192.168.99.100
netsh interface portproxy add v4tov4 listenport=8000 listenaddress=0.0.0.0 connectport=8000 connectaddress=192.168.99.100
Monitoring du demarrage
Script de surveillance
# check-status.ps1
while ($true) {
$date = Get-Date -Format "HH:mm:ss"
# Test frontend
try {
$response = Invoke-WebRequest -Uri "http://localhost:3000" -UseBasicParsing -TimeoutSec 5
Write-Host "$date - Frontend: OK" -ForegroundColor Green
} catch {
Write-Host "$date - Frontend: ERREUR" -ForegroundColor Red
}
# Test API
try {
$response = Invoke-WebRequest -Uri "http://localhost:8000/api" -UseBasicParsing -TimeoutSec 5
Write-Host "$date - API: OK" -ForegroundColor Green
} catch {
Write-Host "$date - API: ERREUR" -ForegroundColor Red
}
Start-Sleep -Seconds 30
}