rc-migration-tests/ef-migration/infrastructure/Build-Containers.ps1
2025-02-03 14:55:00 -05:00

81 lines
2.5 KiB
PowerShell

# Build-Containers.ps1
param (
[switch]$Force
)
$ErrorActionPreference = "Stop"
function Test-WSLRequirements {
Write-Host "Checking WSL requirements..." -ForegroundColor Yellow
# Check if WSL is installed
$wslInstalled = Get-Command wsl.exe -ErrorAction SilentlyContinue
if (-not $wslInstalled) {
Write-Host "WSL is not installed. Please run the following commands as Administrator:" -ForegroundColor Red
Write-Host "wsl --install" -ForegroundColor Yellow
Write-Host "Then restart your computer and run:" -ForegroundColor Yellow
Write-Host "wsl --install -d Ubuntu" -ForegroundColor Yellow
return $false
}
# Check if any distribution is installed
$wslDistros = wsl --list
if ($LASTEXITCODE -ne 0 -or $wslDistros -match "no installed distributions") {
Write-Host "No WSL distribution found. Please run the following command as Administrator:" -ForegroundColor Red
Write-Host "wsl --install -d Ubuntu" -ForegroundColor Yellow
return $false
}
# Check if Docker Desktop is running
$dockerPs = Get-Process "Docker Desktop" -ErrorAction SilentlyContinue
if (-not $dockerPs) {
Write-Host "Docker Desktop is not running. Please start Docker Desktop and try again." -ForegroundColor Red
return $false
}
Write-Host "WSL requirements checked successfully!" -ForegroundColor Green
return $true
}
# Check WSL requirements
if (-not (Test-WSLRequirements)) {
exit 1
}
Write-Host "Starting Docker build process..." -ForegroundColor Green
# Define container names
$containerName = "st-db"
$imageName = "st-database"
# Get the current script directory
$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path
$sqlServerPath = Join-Path $scriptPath "sql-server"
# Verify Dockerfile exists
if (-not (Test-Path (Join-Path $sqlServerPath "Dockerfile"))) {
Write-Host "Dockerfile not found in $sqlServerPath" -ForegroundColor Red
exit 1
}
try {
# Change to the SQL Server directory
Push-Location $sqlServerPath
# Build the Docker image
Write-Host "Building Docker image '$imageName'..." -ForegroundColor Yellow
docker build -t $imageName .
if ($LASTEXITCODE -eq 0) {
Write-Host "Docker image built successfully!" -ForegroundColor Green
} else {
Write-Host "Failed to build Docker image" -ForegroundColor Red
exit 1
}
} catch {
Write-Host "An error occurred: $_" -ForegroundColor Red
exit 1
} finally {
# Return to original directory
Pop-Location
}