75 lines
3.4 KiB
PowerShell
75 lines
3.4 KiB
PowerShell
Param( [string]$cmd, [string]$version)
|
||
|
||
If ($cmd -eq "build_docker") {
|
||
docker build -t sems-on-device-server:latest .
|
||
}
|
||
|
||
|
||
If ($cmd -eq "dev" -or [String]::IsNullOrEmpty($cmd) ) {
|
||
If (Test-Path "./.next") {
|
||
|
||
Remove-Item -Path "./.next" -Recurse
|
||
Write-Host "./.next is Removed"
|
||
}
|
||
docker run --rm -p "22110:22110" -v "C:\SEMS-development\SEMS-on-device-server:/app" -v "C:\tmp:/data" --name sems-on-device-server --env-file "C:\SEMS-development\SEMS-system-guardian\.env" --link sems-model-inference sems-on-device-server:latest sh -c "ln -snf /env/node_modules /app && npm run dev"
|
||
}
|
||
|
||
|
||
If ($cmd -eq "prod") {
|
||
docker run --rm -p "22110:22110" -v "C:\SEMS-development\SEMS-on-device-server\build\latest:/app" -v "C:\tmp:/data" --name sems-on-device-server sems-on-device-server:latest
|
||
}
|
||
|
||
|
||
If ($cmd -eq "remove_docker") {
|
||
docker stop sems-on-device-server
|
||
}
|
||
|
||
|
||
If ($cmd -eq "release") {
|
||
|
||
# 提前删除.next文件夹,根据实测,应该会影响后面的编编译,原因未知
|
||
# 现象:单独在powershell命令行执行docker run没问题,但是在脚本中执行,完全一样的命令,就会报错
|
||
# 然后分别从命令行/脚本进入容器内docker run --rm -it -v "C:\SEMS-development\SEMS-on-device-server:/app" --name sems-on-device-server sems-on-device-server:latest sh
|
||
# 手动执行npm run build发现仍然时命令行可以编译,但是脚本会报错找不到库,
|
||
# 然后发现在脚本环境下,npm run build执行前node_model文件夹正常,但执行后,发现为空白了,node_model文件夹下什么都没了
|
||
# 猜测是因为脚本执行有安全限制,限制了资源使用?不是特别确定原因。
|
||
# 但发现删除了.next后就正常了
|
||
If (Test-Path "./.next") {
|
||
|
||
Remove-Item -Path "./.next" -Recurse
|
||
Write-Host "./.next is Removed"
|
||
}
|
||
#在docker容器内编译
|
||
docker run --rm -v "C:\SEMS-development\SEMS-on-device-server:/app" --name sems-on-device-server-build sems-on-device-server:latest sh -c "ln -snf /env/node_modules /app && npm run build"
|
||
|
||
#.next/static文件夹存在则证明编译完了
|
||
If (Test-Path ".next/static") {
|
||
#复制static文件夹
|
||
Copy-Item -Path .next/static -Destination .next/standalone/.next -Recurse -Force
|
||
Copy-Item -Path ./server.js -Destination .next/standalone -Force
|
||
Copy-Item -Path ./scanner.js -Destination .next/standalone -Force
|
||
|
||
#把.next/standalone文件夹下的所有文件打包,但是除了这个目录下的node_modules文件,因为他是Linux系统下的软连接,会报错。
|
||
Get-ChildItem -Path ".next/standalone/" | Where-Object { $_.Name -ne "node_modules" } | Compress-Archive -DestinationPath "./build/SEMS-on-device-server-$version.zip" -Force
|
||
|
||
Write-Host "Released /build/SEMS-on-device-server-$version.zip"
|
||
|
||
#直接解压一份,便于后面模拟生产环境测试
|
||
If (Test-Path "./build/latest") {
|
||
#如果当前目录下build文件夹存在
|
||
Remove-Item -Path "./build/latest" -Recurse #递归删除build文件夹
|
||
}
|
||
|
||
Expand-Archive -Path "./build/SEMS-on-device-server-$version.zip" -DestinationPath "./build/latest" -Force
|
||
|
||
Write-Host "Expanded SEMS-on-device-server-$version.zip to ./build/latest"
|
||
}
|
||
else {
|
||
|
||
Write-Host "Build Error, Please retry"
|
||
}
|
||
|
||
|
||
|
||
|
||
} |