Files
AiTools/cmd/deploy-common.bat
2026-01-07 16:51:12 +03:00

106 lines
3.3 KiB
Batchfile

@echo off
setlocal enabledelayedexpansion
set SSH_SERVER_IP=192.168.10.110
set SSH_SERVER_USER=root
set SSH_CERT_PATH=%USERPROFILE%\.ssh\root_jarviceai
set IMAGE_NAME=aitools-amd64:latest
set ENV_FILE=.env
set COMPOSE_FILE=docker-compose.yaml
set PLATFORM=linux/amd64/v3
REM === Общие настройки ===
set DOCKERFILE=.\aitools\Dockerfile
set PATH=.\aitools
set IMAGE_TAR_NAME=image-aitools.tar
set IMAGE_TAR_GZ_NAME=image-aitools.tar.gz
REM === Проверка запущен ли Docker Daemon ===
echo Checking if Docker is running...
docker version >nul 2>&1
if !errorlevel! neq 0 (
echo ERROR: Docker is not running or not installed!
echo Please start Docker Desktop and try again.
echo.
echo If Docker is installed, ensure it's running in the system tray.
echo You may need to restart Docker Desktop.
pause
exit /b 1
)
REM === Проверка наличия .env ===
if not exist "%ENV_FILE%" (
echo Error: %ENV_FILE% not found!
pause
exit /b 1
)
REM === Собираем образы ===
set TMP_ENV_ARGS=tmp_env_args.txt
> "%TMP_ENV_ARGS%" (
for /f "usebackq tokens=*" %%a in ("%ENV_FILE%") do (
echo --build-arg %%a
)
)
set BUILD_ARGS=
for /f "usebackq tokens=*" %%a in ("%TMP_ENV_ARGS%") do (
set BUILD_ARGS=!BUILD_ARGS! %%a
)
echo Building image locally with build args...
docker build --platform "%PLATFORM%" -f "%DOCKERFILE%" -t "%IMAGE_NAME%" --progress=plain !BUILD_ARGS! "%PATH%"
REM === Экспорт образов в tar ===
echo Creating tar archives of images...
docker save -o "%IMAGE_TAR_NAME%" "%IMAGE_NAME%"
REM === Сжатие gzip (если доступно) ===
where gzip >nul
if !errorlevel! equ 0 (
echo Compressing images with gzip...
gzip "%IMAGE_TAR_NAME%"
set IMAGE=%IMAGE_TAR_GZ_NAME%
) else (
echo Warning: gzip not found. Using uncompressed .tar files.
set IMAGE=%IMAGE_TAR_NAME%
)
REM === Передача на сервер ===
echo Transferring images and files to server...
scp -i "%SSH_CERT_PATH%" "%IMAGE%" "%SSH_SERVER_USER%@%SSH_SERVER_IP%:/tmp/"
if errorlevel 1 (
echo Error: scp failed to upload %IMAGE%
pause
exit /b 1
)
scp -i "%SSH_CERT_PATH%" "%COMPOSE_FILE%" "%SSH_SERVER_USER%@%SSH_SERVER_IP%:/tmp/docker-compose.yaml"
if errorlevel 1 (
echo Error: scp failed to upload %COMPOSE_FILE%
pause
exit /b 1
)
scp -i "%SSH_CERT_PATH%" "%ENV_FILE%" "%SSH_SERVER_USER%@%SSH_SERVER_IP%:/tmp/.env"
if errorlevel 1 (
echo Error: scp failed to upload %ENV_FILE%
pause
exit /b 1
)
REM === Выполнение на сервере ===
echo Creating directory on server and moving files...
ssh -i "%SSH_CERT_PATH%" "%SSH_SERVER_USER%@%SSH_SERVER_IP%" "mkdir -p /opt/aitools && mv -f /tmp/docker-compose.yaml /opt/aitools/docker-compose.yaml && mv -f /tmp/.env /opt/aitools/.env && echo 'Files moved'"
echo Loading images on server and starting...
ssh -i "%SSH_CERT_PATH%" "%SSH_SERVER_USER%@%SSH_SERVER_IP%" "docker stop aitools 2>/dev/null || true && docker rm aitools 2>/dev/null || true && docker load < /tmp/%IMAGE% && rm /tmp/%IMAGE% && && cd /opt/aitools && docker compose up -d && echo 'Deployment completed!'"
REM === Очистка локальных файлов ===
echo Cleaning local archives...
del /q "%IMAGE_TAR_NAME%" "%TMP_ENV_ARGS%" 2>nul
del /q "%IMAGE_TAR_GZ_NAME%" 2>nul
echo Deployment completed!
pause