Aller au contenu principal

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
}

Prochaines etapes