import paramiko

host = '8.140.221.49'
username = 'root'
private_key_path = r'C:\Users\FZX\.ssh\FzxBdsh-ECS.pem'

def run_command(ssh, cmd):
    stdin, stdout, stderr = ssh.exec_command(cmd)
    return stdout.read().decode().strip(), stderr.read().decode().strip()

print('='*80)
print('推送镜像并部署')
print('='*80)

print('\n1. 推送到本地镜像仓库')
import subprocess
result = subprocess.run(['podman', 'push', 'localhost:5000/fzx/frontend-merchant:v1.1.0'], capture_output=True, text=True)
if result.returncode != 0:
    print('❌ 推送失败:', result.stderr)
    exit(1)
print('✅ 推送成功')

print('\n2. 连接服务器')
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=username, key_filename=private_key_path, timeout=30)

print('3. 停止旧容器')
run_command(ssh, 'podman rm -f fzx-aliyun-nginx')

print('4. 启动前端镜像容器')
run_command(ssh, '''
podman run -d --name fzx-aliyun-nginx \
  --network fzx-aliyun-dev-network --network-alias nginx \
  -p 0.0.0.0:80:80 -p 0.0.0.0:443:443 \
  localhost:5000/fzx/frontend-merchant:v1.1.0
''')

import time
time.sleep(3)

print('\n5. 测试访问')
output, error = run_command(ssh, 'curl -s -o /dev/null -w "%{http_code}" http://localhost/')
print(f'访问测试: {output}')

ssh.close()

print('\n' + '='*80)
print('部署完成!')
print('='*80)