77 lines
2.4 KiB
PowerShell
77 lines
2.4 KiB
PowerShell
|
|
#Requires -Version 5.1
|
|||
|
|
<#
|
|||
|
|
.SYNOPSIS
|
|||
|
|
构建官网镜像并推送到私有 Registry(对齐 bd-server/scripts/push-main-image.ps1)
|
|||
|
|
|
|||
|
|
.DESCRIPTION
|
|||
|
|
使用前: docker login docker-registry.tianyuanapi.com
|
|||
|
|
默认镜像: docker-registry.tianyuanapi.com/haiyushuke/website:latest
|
|||
|
|
|
|||
|
|
.EXAMPLE
|
|||
|
|
.\scripts\docker\build-push.ps1
|
|||
|
|
.\scripts\docker\build-push.ps1 -ExportTar
|
|||
|
|
#>
|
|||
|
|
param(
|
|||
|
|
[string]$Registry = "docker-registry.tianyuanapi.com",
|
|||
|
|
[string]$ImagePath = "haiyushuke/website",
|
|||
|
|
[string]$SiteUrl = "https://www.haiyushuke.com",
|
|||
|
|
[string]$BaiduVerification = "",
|
|||
|
|
[string]$NodeImage = "docker.m.daocloud.io/library/node:20-alpine",
|
|||
|
|
[switch]$ExportTar
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
$ErrorActionPreference = "Stop"
|
|||
|
|
$Tag = "latest"
|
|||
|
|
$ProjectRoot = Resolve-Path (Join-Path $PSScriptRoot "../..")
|
|||
|
|
$FullImage = "${Registry}/${ImagePath}:${Tag}"
|
|||
|
|
$LocalName = "haiyushuke-website:build"
|
|||
|
|
$TarPath = Join-Path $PSScriptRoot "haiyushuke-website-latest.tar"
|
|||
|
|
|
|||
|
|
Set-Location $ProjectRoot
|
|||
|
|
|
|||
|
|
Write-Host "==> Pre-pull base image: $NodeImage"
|
|||
|
|
docker pull $NodeImage
|
|||
|
|
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|||
|
|
|
|||
|
|
Write-Host "==> build $LocalName"
|
|||
|
|
$buildArgs = @(
|
|||
|
|
"build",
|
|||
|
|
"-t", $LocalName,
|
|||
|
|
"--build-arg", "NODE_IMAGE=$NodeImage",
|
|||
|
|
"--build-arg", "NEXT_PUBLIC_SITE_URL=$SiteUrl"
|
|||
|
|
)
|
|||
|
|
if ($BaiduVerification) {
|
|||
|
|
$buildArgs += @("--build-arg", "BAIDU_SITE_VERIFICATION=$BaiduVerification")
|
|||
|
|
}
|
|||
|
|
$buildArgs += "."
|
|||
|
|
docker @buildArgs
|
|||
|
|
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|||
|
|
|
|||
|
|
if ($ExportTar) {
|
|||
|
|
Write-Host "==> tag $FullImage (for save)"
|
|||
|
|
docker tag $LocalName $FullImage
|
|||
|
|
Write-Host "==> save $TarPath"
|
|||
|
|
docker save -o $TarPath $FullImage
|
|||
|
|
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|||
|
|
Write-Host "Done (tar): $TarPath"
|
|||
|
|
exit 0
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Write-Host "==> tag $FullImage"
|
|||
|
|
docker tag $LocalName $FullImage
|
|||
|
|
|
|||
|
|
Write-Host "==> push $FullImage"
|
|||
|
|
docker push $FullImage
|
|||
|
|
if ($LASTEXITCODE -ne 0) {
|
|||
|
|
Write-Host ""
|
|||
|
|
Write-Host "Push failed. Check:" -ForegroundColor Yellow
|
|||
|
|
Write-Host " docker login $Registry" -ForegroundColor Yellow
|
|||
|
|
Write-Host (' curl -sI "https://{0}/v2/{1}/manifests/latest"' -f $Registry, $ImagePath) -ForegroundColor Yellow
|
|||
|
|
Write-Host "Registry host must be docker-registry.tianyuanapi.com (not docker-register...)." -ForegroundColor Yellow
|
|||
|
|
exit $LASTEXITCODE
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Write-Host ""
|
|||
|
|
Write-Host "Done. Pushed: $FullImage"
|
|||
|
|
Write-Host "Deploy host: cd scripts/docker && ./deploy-pull.sh"
|