JGJS2026/scripts/package-dist-image.ps1
2026-04-07 16:27:49 +08:00

46 lines
1.4 KiB
PowerShell

param(
[string]$ImageName = "jgjs2026-dist",
[string]$Tag = "latest"
)
$ErrorActionPreference = "Stop"
$projectRoot = Split-Path -Parent $PSScriptRoot
$distPath = Join-Path $projectRoot "dist"
$dockerfilePath = Join-Path $projectRoot "Dockerfile.dist"
$serverSourcePath = Join-Path $projectRoot "docker\\dist-server"
$buildContext = Join-Path ([System.IO.Path]::GetTempPath()) ("jgjs2026-dist-docker-" + [System.Guid]::NewGuid().ToString("N"))
if (-not (Test-Path $distPath)) {
throw "dist directory not found. Run npm run build first."
}
if (-not (Test-Path $dockerfilePath)) {
throw "Dockerfile.dist not found."
}
if (-not (Test-Path $serverSourcePath)) {
throw "docker/dist-server not found."
}
New-Item -ItemType Directory -Path $buildContext | Out-Null
New-Item -ItemType Directory -Path (Join-Path $buildContext "docker") | Out-Null
try {
Copy-Item $dockerfilePath (Join-Path $buildContext "Dockerfile.dist")
Copy-Item $serverSourcePath (Join-Path $buildContext "docker\\dist-server") -Recurse
Copy-Item $distPath (Join-Path $buildContext "dist") -Recurse
Write-Host "Building Docker image ${ImageName}:${Tag} from minimal dist context..."
docker build -f (Join-Path $buildContext "Dockerfile.dist") -t "${ImageName}:${Tag}" $buildContext
}
finally {
if (Test-Path $buildContext) {
Remove-Item $buildContext -Recurse -Force
}
}
Write-Host "Done."
Write-Host "Run with:"
Write-Host "docker run --rm -p 8080:80 ${ImageName}:${Tag}"