75 lines
1.8 KiB
PowerShell
75 lines
1.8 KiB
PowerShell
param(
|
|
[Parameter(Mandatory = $true)]
|
|
[ValidateSet("translation", "audio", "video", "image")]
|
|
[string]$Plugin,
|
|
[string]$DockerHost = "ssh://docker-gpu",
|
|
[string]$SshTarget = "docker-gpu",
|
|
[string]$RemoteArchive = "C:\ProgramData\LLM\model-chat-app.zip",
|
|
[string]$RemoteAppDir = "Z:\LLM\model-chat-app",
|
|
[switch]$ConfigOnly,
|
|
[switch]$Pull,
|
|
[switch]$NoSyncApp,
|
|
[switch]$NoFirewall
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
. (Join-Path $PSScriptRoot "app_archive.ps1")
|
|
|
|
$composeFile = "core/deploy/docker-gpu/transformers/$Plugin.compose.yaml"
|
|
$envFile = "core/deploy/docker-gpu/transformers/$Plugin.env.example"
|
|
$ports = @{
|
|
translation = 8010
|
|
audio = 8020
|
|
video = 8030
|
|
image = 8040
|
|
}
|
|
|
|
if (-not (Test-Path -LiteralPath $composeFile)) {
|
|
throw "Compose file not found: $composeFile"
|
|
}
|
|
|
|
if (-not (Test-Path -LiteralPath $envFile)) {
|
|
throw "Env file not found: $envFile"
|
|
}
|
|
|
|
$baseArgs = @(
|
|
"--host", $DockerHost,
|
|
"compose",
|
|
"--env-file", $envFile,
|
|
"-f", $composeFile
|
|
)
|
|
|
|
docker @baseArgs config | Out-Host
|
|
if ($ConfigOnly) {
|
|
exit 0
|
|
}
|
|
|
|
if ($Pull) {
|
|
docker @baseArgs pull
|
|
if ($LASTEXITCODE -ne 0) {
|
|
exit $LASTEXITCODE
|
|
}
|
|
}
|
|
|
|
if (-not $NoSyncApp) {
|
|
Sync-AppDirectory -SshTarget $SshTarget -RemoteArchive $RemoteArchive -RemoteAppDir $RemoteAppDir
|
|
}
|
|
|
|
docker @baseArgs up -d
|
|
if ($LASTEXITCODE -ne 0) {
|
|
exit $LASTEXITCODE
|
|
}
|
|
|
|
if (-not $NoFirewall) {
|
|
$port = $ports[$Plugin]
|
|
$ruleName = "LLM Transformers $Plugin $port"
|
|
$firewallScript = @"
|
|
if (-not (Get-NetFirewallRule -DisplayName '$ruleName' -ErrorAction SilentlyContinue)) {
|
|
New-NetFirewallRule -DisplayName '$ruleName' -Direction Inbound -Action Allow -Protocol TCP -LocalPort $port -Profile Any | Out-Null
|
|
}
|
|
"@
|
|
Invoke-RemotePowerShell -SshTarget $SshTarget -Script $firewallScript
|
|
}
|
|
|
|
exit $LASTEXITCODE
|