# PowerShell script for fast Docker build using host compilation param ( [string]$Arch = "arm64", [string]$Tag = "x0gp-server:latest" ) $ErrorActionPreference = "Stop" # Navigate to the server root directory if not already there $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path $ServerDir = Split-Path -Parent $ScriptDir Push-Location $ServerDir try { Write-Host "Building Go binary for OS=linux, ARCH=$Arch..." -ForegroundColor Cyan # Setup temporary binary path $BinPath = "bin/poc-server-linux-$Arch" if (!(Test-Path "bin")) { New-Item -ItemType Directory -Path "bin" | Out-Null } # Configure cross-compilation environment variables $env:CGO_ENABLED = "0" $env:GOOS = "linux" $env:GOARCH = $Arch # Compile go build -ldflags="-s -w" -o $BinPath ./cmd/poc-server Write-Host "Go binary successfully compiled: $BinPath" -ForegroundColor Green Write-Host "Building Docker image '$Tag'..." -ForegroundColor Cyan # Run docker build docker build --build-arg BINARY_PATH=$BinPath -t $Tag -f Dockerfile.fast . if ($LASTEXITCODE -ne 0) { throw "Docker build failed with exit code $LASTEXITCODE" } Write-Host "`nDocker image '$Tag' built successfully!" -ForegroundColor Green } catch { Write-Host "Error occurred: $_" -ForegroundColor Red exit 1 } finally { # Restore environment variables Remove-Item env:CGO_ENABLED -ErrorAction SilentlyContinue Remove-Item env:GOOS -ErrorAction SilentlyContinue Remove-Item env:GOARCH -ErrorAction SilentlyContinue Pop-Location }