<# Lance manager-service EN LOCAL, branche sur un Mongo source et sur la base cible (preprod ou prod) a travers un tunnel SSH. Pourquoi en local plutot que sur le serveur : la migration ne demande pas de tester un deploiement, et builder l'image evite d'affronter en meme temps le Dockerfile de manager-app (Flutter 3.7 = Dart 2.19, alors que le pubspec exige >= 3.1) et la source NuGet git.dev-espaces-naturels.lu qui repond 401. Rien n'est ecrit dans appsettings : les variables d'environnement ASP.NET Core (double underscore = ':') prennent le dessus. Aucun secret ne part dans le depot. #> param( [string]$MongoUri = "mongodb://localhost:27018", # Mongo SOURCE (dump restaure) [string]$PgHost = "127.0.0.1", [int] $PgPort = 5433, # extremite locale du tunnel SSH [string]$EnvFile = "$PSScriptRoot\.env" ) $ErrorActionPreference = "Stop" if (-not (Test-Path $EnvFile)) { throw "Fichier introuvable : $EnvFile (copier .env.example)" } $cfg = @{} Get-Content $EnvFile | Where-Object { $_ -match '^\s*[^#].*=' } | ForEach-Object { $k,$v = $_ -split '=', 2 ; $cfg[$k.Trim()] = $v.Trim() } foreach ($k in 'POSTGRES_USER','POSTGRES_PASSWORD','POSTGRES_DATABASE') { if ([string]::IsNullOrWhiteSpace($cfg[$k])) { throw "$k absent ou vide dans $EnvFile" } } # Le repo est 3 niveaux au-dessus : Deployment/provisioning -> Deployment -> ManagerService -> repo $repo = (Resolve-Path "$PSScriptRoot\..\..\..").Path Write-Host "Verifications..." -ForegroundColor Cyan $mongoPort = if ($MongoUri -match ':(\d+)') { [int]$Matches[1] } else { 27017 } if (-not (Test-NetConnection 127.0.0.1 -Port $mongoPort -InformationLevel Quiet -WarningAction SilentlyContinue)) { throw "Mongo source injoignable sur $mongoPort. Le conteneur est-il demarre ?" } Write-Host " Mongo source $mongoPort : OK" -ForegroundColor Green if (-not (Test-NetConnection $PgHost -Port $PgPort -InformationLevel Quiet -WarningAction SilentlyContinue)) { throw "Postgres injoignable sur ${PgHost}:${PgPort}. Le tunnel SSH est-il ouvert ?" } Write-Host " Postgres ${PgHost}:${PgPort} : OK" -ForegroundColor Green $env:ASPNETCORE_ENVIRONMENT = "Development" $env:ConnectionStrings__TabletDb = $MongoUri $env:ConnectionStrings__PostgresConnection = "Host=$PgHost;Port=$PgPort;Database=$($cfg['POSTGRES_DATABASE']);Username=$($cfg['POSTGRES_USER']);Password=$($cfg['POSTGRES_PASSWORD'])" Write-Host "" Write-Host " TabletDb -> $MongoUri" -ForegroundColor Yellow Write-Host " PostgresConnection -> ${PgHost}:${PgPort}/$($cfg['POSTGRES_DATABASE'])" -ForegroundColor Yellow Write-Host " Swagger -> http://localhost:5000/swagger" -ForegroundColor Cyan Write-Host "" Set-Location $repo dotnet run --project ManagerService