#!/bin/bash
set -e

# 进入脚本所在目录(确保和 docker-compose.yml 在同一目录)
cd "$(dirname "$0")"

echo "======================================================="
echo "开始在服务器上拉取镜像并一键部署"
echo "======================================================="

echo ">> 正在从阿里云镜像库拉取最新的 server、web 和 libreoffice 镜像..."
# 如果拉取需要密码，请确保服务器上已经执行过 docker login
if ! docker pull registry.cn-qingdao.aliyuncs.com/fzxs/aurak-server:latest; then
    echo "拉取 server 镜像失败！请确保服务器已登录 registry.cn-qingdao.aliyuncs.com"
    exit 1
fi

if ! docker pull registry.cn-qingdao.aliyuncs.com/fzxs/aurak-web:latest; then
    echo "拉取 web 镜像失败！请确保服务器已登录 registry.cn-qingdao.aliyuncs.com"
    exit 1
fi

if ! docker pull registry.cn-qingdao.aliyuncs.com/fzxs/aurak-libreoffice:latest; then
    echo "拉取 libreoffice 镜像失败！请确保服务器已登录 registry.cn-qingdao.aliyuncs.com"
    exit 1
fi

echo ">> 为了让 docker-compose 能直接使用拉取的镜像，重新标记（Tag）镜像..."
docker tag registry.cn-qingdao.aliyuncs.com/fzxs/aurak-server:latest aurak-server:latest 2>/dev/null || true
docker tag registry.cn-qingdao.aliyuncs.com/fzxs/aurak-web:latest aurak-web:latest 2>/dev/null || true
docker tag registry.cn-qingdao.aliyuncs.com/fzxs/aurak-libreoffice:latest aurak-libreoffice:latest 2>/dev/null || true

# 因为 docker-compose 没有指定 image，会默认通过文件夹名字或我们指定的标签运行
# 如果 docker-compose 仍然会去找默认名字，我们需要让环境变量里的 image 为我们拉取的，
# 不过最简单的方式是，通过环境变量临时覆盖，或者使用 docker compose up 的特性
# 但既然不能改 docker-compose.yml，我们可以通过 IMAGE_NAME 环境变量来覆盖吗？没有设定的话不行。
# 所以我们可以通过 docker tag 来把阿里云的镜像打成 docker-compose.yml 默认预期的服务名字
# 如果目录叫 AuraK，docker-compose 默认生成的镜像名叫 aurak-server 和 aurak-web
docker tag registry.cn-qingdao.aliyuncs.com/fzxs/aurak-server:latest aurak-server 2>/dev/null || true
docker tag registry.cn-qingdao.aliyuncs.com/fzxs/aurak-web:latest aurak-web 2>/dev/null || true
docker tag registry.cn-qingdao.aliyuncs.com/fzxs/aurak-libreoffice:latest aurak-libreoffice 2>/dev/null || true

echo ">> 正在重新创建并启动容器..."
# --no-build 确保在服务器上不会意外使用本地代码触发构建
docker compose up -d --no-build server web libreoffice

echo "======================================================="
echo "部署完成！当前服务运行状态："
docker compose ps
echo "======================================================="
