Files
remnawave-minishop/scripts/docker-build-push-images.ps1
T

54 lines
1.6 KiB
PowerShell

$ErrorActionPreference = "Stop"
if (-not $env:IMAGE_TAG) {
throw "Set IMAGE_TAG to the release tag you want to build and push"
}
$imageRegistriesRaw = if ($env:IMAGE_REGISTRIES) { $env:IMAGE_REGISTRIES } else { "ghcr.io,docker.io" }
$imageRegistries = @($imageRegistriesRaw -split "[,;\s]+" | Where-Object { $_ })
$imageNamespace = if ($env:IMAGE_NAMESPACE) { $env:IMAGE_NAMESPACE } else { "3252a8" }
$imageTag = $env:IMAGE_TAG
$imagePrefix = if ($env:IMAGE_PREFIX) { $env:IMAGE_PREFIX } else { "remnawave-minishop" }
$dockerfile = if ($env:DOCKERFILE) { $env:DOCKERFILE } else { "deploy/docker/Dockerfile" }
$targetsRaw = if ($env:TARGETS) { $env:TARGETS } else { "backend,worker,frontend" }
$targets = @($targetsRaw -split "[,;\s]+" | Where-Object { $_ })
function Get-ImageName {
param(
[string]$Registry,
[string]$Target
)
return "$Registry/$imageNamespace/$imagePrefix-$Target`:$imageTag"
}
function Build-Image {
param([string]$Target)
$tagArgs = @()
foreach ($registry in $imageRegistries) {
$tagArgs += @("-t", (Get-ImageName -Registry $registry -Target $Target))
}
Write-Host "Building $Target for: $($imageRegistries -join ', ')" -ForegroundColor Cyan
docker build -f $dockerfile --target $Target @tagArgs .
}
function Push-Image {
param([string]$Target)
foreach ($registry in $imageRegistries) {
$image = Get-ImageName -Registry $registry -Target $Target
Write-Host "Pushing $image" -ForegroundColor Cyan
docker push $image
}
}
foreach ($target in $targets) {
Build-Image -Target $target
}
foreach ($target in $targets) {
Push-Image -Target $target
}