@echo off echo 🚀 前端 Docker 镜像构建和导出脚本 echo ======================================== :: 设置变量 set VERSION=%1 if "%VERSION%"=="" set VERSION=1.0.0 set IMAGE_NAME=deotaland-frontend set IMAGE_TAG=%IMAGE_NAME%:v%VERSION% set EXPORT_FILE=%IMAGE_NAME%-v%VERSION%.tar set COMPRESSED_FILE=%EXPORT_FILE%.gz echo 📋 构建信息: echo 镜像名称:%IMAGE_TAG% echo 导出文件:%EXPORT_FILE% echo 压缩文件:%COMPRESSED_FILE% echo. :: 步骤1:构建镜像 echo 🔨 步骤1:构建 Docker 镜像... docker build -t %IMAGE_TAG% . if %errorlevel% neq 0 ( echo ❌ 镜像构建失败! pause exit /b 1 ) echo ✅ 镜像构建成功! echo. :: 步骤2:本地测试 echo 🧪 步骤2:本地测试容器... docker run -d -p 3001:3000 --name test-frontend %IMAGE_TAG% :: 等待5秒让容器启动 echo ⏳ 等待容器启动... timeout /t 5 /nobreak > nul :: 检查容器状态 docker ps | findstr test-frontend > nul if %errorlevel% neq 0 ( echo ❌ 容器启动失败! docker logs test-frontend docker rm -f test-frontend pause exit /b 1 ) echo ✅ 容器启动成功! echo. :: 步骤3:停止测试容器 echo 🛑 步骤3:清理测试容器... docker stop test-frontend docker rm test-frontend echo ✅ 测试容器已清理 echo. :: 步骤4:导出镜像 echo 📦 步骤4:导出镜像... docker save -o %EXPORT_FILE% %IMAGE_TAG% if %errorlevel% neq 0 ( echo ❌ 镜像导出失败! pause exit /b 1 ) echo ✅ 镜像导出成功! echo. :: 步骤5:压缩文件 echo 🗜️ 步骤5:压缩镜像文件... powershell -Command "Compress-Archive -Path '%EXPORT_FILE%' -DestinationPath '%EXPORT_FILE%.zip' -Force" if %errorlevel% neq 0 ( echo ⚠️ 压缩失败,但镜像文件可用 ) else ( echo ✅ 镜像压缩成功! :: 删除原始tar文件 del %EXPORT_FILE% echo 🗑️ 已删除原始tar文件 ) echo. :: 步骤6:生成版本信息 echo 📝 步骤6:生成版本信息... echo %date% %time% > version-v%VERSION%.txt echo 镜像:%IMAGE_TAG% >> version-v%VERSION%.txt echo 版本:v%VERSION% >> version-v%VERSION%.txt echo ✅ 版本信息已生成 echo. :: 步骤7:显示结果 echo 🎉 构建完成! echo ======================================== echo 📁 输出文件: if exist %EXPORT_FILE%.zip ( echo - %EXPORT_FILE%.zip ) else ( echo - %EXPORT_FILE% ) echo - version-v%VERSION%.txt echo. echo 📊 镜像信息: docker images %IMAGE_NAME% echo. echo 🚀 下一步: echo 1. 将生成的文件提供给后端运维 echo 2. 参考 DEPLOYMENT_GUIDE.md 进行部署 echo. pause