Files
AiTools/cmd/deploy-common.cmd
2026-01-07 19:12:55 +03:00

111 lines
3.5 KiB
Batchfile

@echo off
setlocal enabledelayedexpansion
echo Current directory: %cd%
where docker
where scp
where where
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 DOCKER_PATH=.\aitools
set IMAGE_TAR_NAME=image-aitools.tar
set IMAGE_TAR_GZ_NAME=image-aitools.tar.gz
REM REM === Проверка запущен ли Docker Daemon ===
REM echo Checking if Docker is running...
REM docker version >nul 2>&1
REM if !errorlevel! neq 0 (
REM echo ERROR: Docker is not running or not installed!
REM echo Please start Docker Desktop and try again.
REM echo.
REM echo If Docker is installed, ensure it's running in the system tray.
REM echo You may need to restart Docker Desktop.
REM pause
REM exit /b 1
REM )
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! "%DOCKER_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