@echo off rem Test stand in Docker, isolated from a real install: own compose project, rem own .env.test, data in data-test\, port 8090. rem start-test.bat build and start rem start-test.bat stop stop (data is kept) rem start-test.bat reset stop and wipe database and data-test\ rem start-test.bat logs follow backend and worker logs setlocal chcp 65001 >nul cd /d "%~dp0" set PROJECT=pgames-test set ENV_FILE=.env.test set PORT=8090 set COMPOSE=docker compose -p %PROJECT% --env-file %ENV_FILE% if not exist %ENV_FILE% ( echo Создаю %ENV_FILE% с тестовыми настройками ( echo SECRET_KEY=test-stand-%RANDOM%%RANDOM%%RANDOM% echo ADMIN_USERNAME=admin echo ADMIN_PASSWORD=admin echo POSTGRES_PASSWORD=pgames echo HTTP_PORT=%PORT% echo DATA_PATH=./data-test echo WORKER_THREADS=4 echo COOKIE_SECURE=false ) > %ENV_FILE% ) call :ensure_docker || exit /b 1 if /i "%~1"=="stop" ( %COMPOSE% down exit /b ) if /i "%~1"=="reset" ( %COMPOSE% down -v if exist data-test rmdir /s /q data-test echo Стенд и его данные удалены exit /b ) if /i "%~1"=="logs" ( %COMPOSE% logs -f backend worker exit /b ) echo Сборка и запуск контейнеров... %COMPOSE% up -d --build || ( echo Не удалось запустить стенд exit /b 1 ) echo Жду готовности http://localhost:%PORT% ... for /l %%i in (1,1,60) do ( curl -fs http://localhost:%PORT%/api/health >nul 2>&1 && goto ready timeout /t 2 /nobreak >nul ) echo Стенд не ответил за 2 минуты. Логи: start-test.bat logs exit /b 1 :ready if not exist data-test\sample.zip ( echo Генерирую тестовую игру data-test\sample.zip %COMPOSE% exec -T backend python -m tests.make_sample /data/sample.zip >nul ) echo. echo Стенд запущен: http://localhost:%PORT% echo Первый вход: admin / admin (потребуется сменить логин и пароль) echo Тестовая игра для загрузки: %CD%\data-test\sample.zip echo Остановить: start-test.bat stop Сбросить: start-test.bat reset start "" http://localhost:%PORT% exit /b 0 :ensure_docker docker info >nul 2>&1 && exit /b 0 if not exist "%ProgramFiles%\Docker\Docker\Docker Desktop.exe" ( echo Docker не запущен и Docker Desktop не найден exit /b 1 ) echo Запускаю Docker Desktop... start "" "%ProgramFiles%\Docker\Docker\Docker Desktop.exe" for /l %%i in (1,1,60) do ( timeout /t 3 /nobreak >nul docker info >nul 2>&1 && exit /b 0 ) echo Docker не запустился за 3 минуты exit /b 1