CaiWuXiTong/scripts/docker-fix-start.ps1
yueyang c0aab60862 业绩明细:订单侧双口径核对(买家实付/卖家实收)+ 差额待核实 + 列名与筛选改名
- 同步:账单能对上卖家实收时按实收核对(差额归零、订单实付/实收列显示实收值),并写入标识「订单实付按卖家实收核对」
- 页面:新增兜底备注「差额待核实」(可筛选);该标识在「匹配原因」列展示并纳入筛选与联动计数
- 列名:「订单实付金额」→「订单实付/实收金额」;「未匹配原因」→「匹配原因」
- 新增 scripts/docker-fix-start.ps1(Docker 因僵尸 socket 起不来时一键清理并启动)
2026-10-14 17:54:56 +08:00

73 lines
2.6 KiB
PowerShell
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<#
修复 Docker Desktop 起不来(引擎一直 Stopped、反复弹「恢复出厂设置」)的问题。
根因:Docker Desktop 崩溃后会留下僵尸 unix socket 文件(例:
%LOCALAPPDATA%\Docker\run\dockerInference
%LOCALAPPDATA%\docker-secrets-engine\engine.sock
这类文件在 Windows 上删不掉("系统无法访问此文件"),下次启动时
Docker 后端"先删后建"失败 → 再次崩溃 → 又弹重置框,形成死循环。
处理:把上面两个目录整体改名(不删除,可恢复),让 Docker 重新创建。
用法:
pwsh -NoProfile -File scripts/docker-fix-start.ps1 # 只清理
pwsh -NoProfile -File scripts/docker-fix-start.ps1 -Start # 清理并启动,等引擎就绪
#>
param(
[switch]$Start,
[int]$TimeoutSeconds = 240
)
$ErrorActionPreference = 'Stop'
$apps = Get-Process -ErrorAction SilentlyContinue |
Where-Object { $_.ProcessName -in @('Docker Desktop', 'com.docker.backend', 'docker') }
if ($apps) {
$apps | Stop-Process -Force -ErrorAction SilentlyContinue
Write-Host ('已结束 Docker 相关进程:' + (($apps | Select-Object -ExpandProperty ProcessName -Unique) -join ', '))
Start-Sleep -Seconds 3
}
$stamp = Get-Date -Format 'yyyyMMdd-HHmmss'
$targets = @(
(Join-Path $env:LOCALAPPDATA 'Docker\run'),
(Join-Path $env:LOCALAPPDATA 'docker-secrets-engine')
)
foreach ($path in $targets) {
if (-not (Test-Path -LiteralPath $path)) {
Write-Host "无需处理(不存在):$path"
continue
}
$leaf = "$(Split-Path -Leaf $path).stale-$stamp"
try {
Rename-Item -LiteralPath $path -NewName $leaf -ErrorAction Stop
Write-Host "已改名:$path -> $leaf"
} catch {
Write-Host "改名失败:$path($($_.Exception.Message))"
}
}
if (-not $Start) {
Write-Host '清理完成。加 -Start 可直接启动 Docker Desktop 并等待引擎就绪。'
return
}
$exe = 'C:\Program Files\Docker\Docker\Docker Desktop.exe'
if (-not (Test-Path -LiteralPath $exe)) { throw "找不到 Docker Desktop:$exe" }
Start-Process -FilePath $exe
Write-Host '已启动 Docker Desktop,等待引擎就绪…'
$deadline = (Get-Date).AddSeconds($TimeoutSeconds)
while ((Get-Date) -lt $deadline) {
Start-Sleep -Seconds 10
$version = (docker version --format '{{.Server.Version}}' 2>$null)
if ($version) {
Write-Host "引擎已就绪:$version"
exit 0
}
}
Write-Host '超时:引擎仍未就绪。请查看 Docker Desktop 窗口的错误提示(不要点「恢复出厂设置」)。'
exit 1