ETest-Vue-FastAPI/docker-fix.bat

154 lines
5.6 KiB
Batchfile

@echo off
chcp 65001 >nul
title ETest-LIMS Docker Fix
color 0B
echo ========================================
echo ETest-LIMS Docker Deployment Fix
echo ========================================
echo.
:: Check admin rights
net session >nul 2>&1
if %errorlevel% neq 0 (
echo [!] Administrator privileges required
echo [*] Requesting admin rights...
echo.
powershell -Command "Start-Process '%~f0' -Verb RunAs"
exit /b
)
echo [OK] Running with administrator privileges
echo.
:: Check Docker
echo [1/5] Checking Docker...
docker info >nul 2>&1
if %errorlevel% neq 0 (
echo [!] Docker is not running
echo [*] Please start Docker Desktop first
pause
exit /b 1
)
echo [OK] Docker is running
echo.
:: Configure mirror
echo [2/5] Configuring Docker mirror...
set "DOCKER_CONFIG=%USERPROFILE%\.docker"
if not exist "%DOCKER_CONFIG%" mkdir "%DOCKER_CONFIG%"
:: Backup existing config
if exist "%DOCKER_CONFIG%\daemon.json" (
copy /Y "%DOCKER_CONFIG%\daemon.json" "%DOCKER_CONFIG%\daemon.json.backup.%date:~0,4%%date:~5,2%%date:~8,2%" >nul
echo [OK] Original config backed up
)
:: Write new config
echo {> "%DOCKER_CONFIG%\daemon.json"
echo "registry-mirrors": [>> "%DOCKER_CONFIG%\daemon.json"
echo "https://docker.mirrors.ustc.edu.cn",>> "%DOCKER_CONFIG%\daemon.json"
echo "https://hub-mirror.c.163.com",>> "%DOCKER_CONFIG%\daemon.json"
echo "https://mirror.baidubce.com",>> "%DOCKER_CONFIG%\daemon.json"
echo "https://docker.m.daocloud.io">> "%DOCKER_CONFIG%\daemon.json"
echo ],>> "%DOCKER_CONFIG%\daemon.json"
echo "dns": ["8.8.8.8", "114.114.114.114"]>> "%DOCKER_CONFIG%\daemon.json"
echo }>> "%DOCKER_CONFIG%\daemon.json"
echo [OK] Mirror configuration saved
echo Configured mirrors:
echo - USTC Mirror
echo - NetEase Mirror
echo - Baidu Mirror
echo - DaoCloud Mirror
echo.
:: Clean Docker
echo [3/5] Cleaning Docker resources...
docker system prune -f >nul 2>&1
echo [OK] Cleanup completed
echo.
:: Check ports
echo [4/5] Checking ports...
netstat -ano | findstr ":3306" >nul && echo [!] Port 3306 is in use || echo [OK] Port 3306 is available
netstat -ano | findstr ":6379" >nul && echo [!] Port 6379 is in use || echo [OK] Port 6379 is available
echo.
:: Check disk space
echo [5/5] Checking disk space...
for /f "tokens=3" %%a in ('wmic logicaldisk where "DeviceID='C:'" get FreeSpace ^| findstr /v "FreeSpace"') do set FreeBytes=%%a
set /a FreeGB=%FreeBytes:~0,-9%
if %FreeGB% LSS 10 (
echo [!] Warning: Low disk space (%FreeGB% GB)
) else (
echo [OK] Sufficient disk space (%FreeGB% GB)
)
echo.
:: Generate docker-compose.yml
echo [*] Generating docker-compose.yml...
set "PROJECT_PATH=C:\PPRO\ETest-Vue-FastAPI"
echo version: '3.8'> "%PROJECT_PATH%\docker-compose.yml"
echo.>> "%PROJECT_PATH%\docker-compose.yml"
echo services:>> "%PROJECT_PATH%\docker-compose.yml"
echo mysql:>> "%PROJECT_PATH%\docker-compose.yml"
echo image: mysql:8.0>> "%PROJECT_PATH%\docker-compose.yml"
echo container_name: etest-mysql>> "%PROJECT_PATH%\docker-compose.yml"
echo restart: always>> "%PROJECT_PATH%\docker-compose.yml"
echo environment:>> "%PROJECT_PATH%\docker-compose.yml"
echo MYSQL_ROOT_PASSWORD: Tgzz2025+>> "%PROJECT_PATH%\docker-compose.yml"
echo MYSQL_DATABASE: ruoyi-fastapi>> "%PROJECT_PATH%\docker-compose.yml"
echo MYSQL_USER: cpy_admin>> "%PROJECT_PATH%\docker-compose.yml"
echo MYSQL_PASSWORD: Tgzz2025+>> "%PROJECT_PATH%\docker-compose.yml"
echo TZ: Asia/Shanghai>> "%PROJECT_PATH%\docker-compose.yml"
echo ports:>> "%PROJECT_PATH%\docker-compose.yml"
echo - "3306:3306">> "%PROJECT_PATH%\docker-compose.yml"
echo volumes:>> "%PROJECT_PATH%\docker-compose.yml"
echo - mysql_data:/var/lib/mysql>> "%PROJECT_PATH%\docker-compose.yml"
echo command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4>> "%PROJECT_PATH%\docker-compose.yml"
echo networks:>> "%PROJECT_PATH%\docker-compose.yml"
echo - etest-network>> "%PROJECT_PATH%\docker-compose.yml"
echo.>> "%PROJECT_PATH%\docker-compose.yml"
echo redis:>> "%PROJECT_PATH%\docker-compose.yml"
echo image: redis:7-alpine>> "%PROJECT_PATH%\docker-compose.yml"
echo container_name: etest-redis>> "%PROJECT_PATH%\docker-compose.yml"
echo restart: always>> "%PROJECT_PATH%\docker-compose.yml"
echo ports:>> "%PROJECT_PATH%\docker-compose.yml"
echo - "6379:6379">> "%PROJECT_PATH%\docker-compose.yml"
echo volumes:>> "%PROJECT_PATH%\docker-compose.yml"
echo - redis_data:/data>> "%PROJECT_PATH%\docker-compose.yml"
echo command: redis-server --appendonly yes>> "%PROJECT_PATH%\docker-compose.yml"
echo networks:>> "%PROJECT_PATH%\docker-compose.yml"
echo - etest-network>> "%PROJECT_PATH%\docker-compose.yml"
echo.>> "%PROJECT_PATH%\docker-compose.yml"
echo volumes:>> "%PROJECT_PATH%\docker-compose.yml"
echo mysql_data:>> "%PROJECT_PATH%\docker-compose.yml"
echo redis_data:>> "%PROJECT_PATH%\docker-compose.yml"
echo.>> "%PROJECT_PATH%\docker-compose.yml"
echo networks:>> "%PROJECT_PATH%\docker-compose.yml"
echo etest-network:>> "%PROJECT_PATH%\docker-compose.yml"
echo driver: bridge>> "%PROJECT_PATH%\docker-compose.yml"
echo [OK] docker-compose.yml generated
echo.
:: Completion
echo ========================================
echo Fix Completed!
echo ========================================
echo.
echo IMPORTANT:
echo 1. Please restart Docker Desktop
echo 2. Then run: docker-compose up -d
echo.
echo If still failing, try:
echo - Use mobile hotspot
echo - Or configure proxy
echo - Or download images manually
echo.
echo File location: C:\PPRO\ETest-Vue-FastAPI\docker-fix.bat
echo.
pause