Files
Art-gallery/infra/docker/push-lan.ps1

67 lines
2.4 KiB
PowerShell

# Push Docker image to Gitea over LAN (avoids KeenDNS hairpin slow upload).
param(
[string[]]$Tags = @('latest'),
[switch]$SkipHosts
)
$ErrorActionPreference = "Stop"
$Registry = "gitea.mysuperlab.netcraze.pro"
$LanIp = "192.168.10.122"
$Image = "$Registry/danilka/gallery-web"
$HostsPath = "$env:SystemRoot\System32\drivers\etc\hosts"
$HostsMarker = "# gallery-gitea-lan-push"
function Test-Admin {
$current = [Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()
return $current.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
}
function Get-GiteaDnsAddress {
try {
return [System.Net.Dns]::GetHostAddresses($Registry) |
Where-Object { $_.AddressFamily -eq 'InterNetwork' } |
Select-Object -First 1 -ExpandProperty IPAddressToString
} catch {
return $null
}
}
Write-Host "=== Gitea LAN push ===" -ForegroundColor Cyan
$resolved = Get-GiteaDnsAddress
Write-Host "DNS resolves $Registry -> $resolved"
if ($resolved -and $resolved -ne $LanIp) {
Write-Host "Public/hairpin path detected (slow push). LAN override recommended." -ForegroundColor Yellow
}
if (-not $SkipHosts) {
$hostsContent = Get-Content $HostsPath -Raw -ErrorAction SilentlyContinue
$hasEntry = $hostsContent -match "gitea\.mysuperlab\.netcraze\.pro"
if (-not $hasEntry) {
if (-not (Test-Admin)) {
Write-Host ""
Write-Host "Re-run as Administrator to add hosts entry, or add manually:" -ForegroundColor Yellow
Write-Host " $LanIp $Registry"
Write-Host " Then: ipconfig /flushdns"
exit 1
}
Add-Content -Path $HostsPath -Value "`n$HostsMarker`n$LanIp $Registry" -Encoding ASCII
ipconfig /flushdns | Out-Null
Write-Host "Added hosts: $LanIp -> $Registry" -ForegroundColor Green
} else {
Write-Host "Hosts entry for gitea already present." -ForegroundColor Green
}
}
$after = Get-GiteaDnsAddress
Write-Host "After override, resolves to: $after"
foreach ($tag in ($Tags | Select-Object -Unique)) {
Write-Host ""
Write-Host "Pushing ${Image}:$tag ..."
docker push "${Image}:$tag"
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
}
Write-Host ""
Write-Host "Done. Remove hosts entry ($HostsMarker) when finished if you no longer need LAN override." -ForegroundColor Cyan