#!/usr/bin/expect -f set timeout 300 set host "192.168.3.90" set user "root" set password "816301" set script_dir [file dirname [file normalize [info script]]] set project_root [file normalize [file join $script_dir ".."]] set archive "/tmp/ai-ict-deploy.tgz" set remote_archive "/root/ai-ict-deploy.tgz" set remote_path "/root/deploy/ai-ict" proc auth {} { expect { "*yes/no*" { send "yes\r"; exp_continue } "*assword:*" { send "$::password\r"; exp_continue } eof } } exec /bin/sh -c "cd '$project_root' && tar -czf '$archive' Dockerfile docker-compose.yml pyproject.toml README.md .env.example src scripts migrations" spawn ssh -o StrictHostKeyChecking=accept-new $user@$host "hostname && docker --version && ((docker compose version) || (docker-compose --version)) && mkdir -p $remote_path" auth spawn scp -o StrictHostKeyChecking=accept-new $archive $user@$host:$remote_archive auth spawn ssh -o StrictHostKeyChecking=accept-new $user@$host "if [ -f $remote_path/.env ]; then cp $remote_path/.env /root/ai-ict-deploy.env.bak; fi && rm -rf $remote_path/* && tar -xzf $remote_archive -C $remote_path && if [ -f /root/ai-ict-deploy.env.bak ]; then mv /root/ai-ict-deploy.env.bak $remote_path/.env; fi && cd $remote_path && ((docker compose down || docker-compose down) >/dev/null 2>&1 || true) && ((docker compose up -d --build) || (docker-compose up -d --build)) && ((docker compose ps) || (docker-compose ps))" auth file delete -force $archive puts "deploy_complete"