deploy.sh 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #!/bin/bash
  2. set -e
  3. # 进入脚本所在目录(确保和 docker-compose.yml 在同一目录)
  4. cd "$(dirname "$0")"
  5. echo "======================================================="
  6. echo "开始在服务器上拉取镜像并一键部署"
  7. echo "======================================================="
  8. echo ">> 正在从阿里云镜像库拉取最新的 server、web 和 libreoffice 镜像..."
  9. # 如果拉取需要密码,请确保服务器上已经执行过 docker login
  10. if ! docker pull registry.cn-qingdao.aliyuncs.com/fzxs/aurak-server:latest; then
  11. echo "拉取 server 镜像失败!请确保服务器已登录 registry.cn-qingdao.aliyuncs.com"
  12. exit 1
  13. fi
  14. if ! docker pull registry.cn-qingdao.aliyuncs.com/fzxs/aurak-web:latest; then
  15. echo "拉取 web 镜像失败!请确保服务器已登录 registry.cn-qingdao.aliyuncs.com"
  16. exit 1
  17. fi
  18. if ! docker pull registry.cn-qingdao.aliyuncs.com/fzxs/aurak-libreoffice:latest; then
  19. echo "拉取 libreoffice 镜像失败!请确保服务器已登录 registry.cn-qingdao.aliyuncs.com"
  20. exit 1
  21. fi
  22. echo ">> 为了让 docker-compose 能直接使用拉取的镜像,重新标记(Tag)镜像..."
  23. docker tag registry.cn-qingdao.aliyuncs.com/fzxs/aurak-server:latest aurak-server:latest 2>/dev/null || true
  24. docker tag registry.cn-qingdao.aliyuncs.com/fzxs/aurak-web:latest aurak-web:latest 2>/dev/null || true
  25. docker tag registry.cn-qingdao.aliyuncs.com/fzxs/aurak-libreoffice:latest aurak-libreoffice:latest 2>/dev/null || true
  26. # 因为 docker-compose 没有指定 image,会默认通过文件夹名字或我们指定的标签运行
  27. # 如果 docker-compose 仍然会去找默认名字,我们需要让环境变量里的 image 为我们拉取的,
  28. # 不过最简单的方式是,通过环境变量临时覆盖,或者使用 docker compose up 的特性
  29. # 但既然不能改 docker-compose.yml,我们可以通过 IMAGE_NAME 环境变量来覆盖吗?没有设定的话不行。
  30. # 所以我们可以通过 docker tag 来把阿里云的镜像打成 docker-compose.yml 默认预期的服务名字
  31. # 如果目录叫 AuraK,docker-compose 默认生成的镜像名叫 aurak-server 和 aurak-web
  32. docker tag registry.cn-qingdao.aliyuncs.com/fzxs/aurak-server:latest aurak-server 2>/dev/null || true
  33. docker tag registry.cn-qingdao.aliyuncs.com/fzxs/aurak-web:latest aurak-web 2>/dev/null || true
  34. docker tag registry.cn-qingdao.aliyuncs.com/fzxs/aurak-libreoffice:latest aurak-libreoffice 2>/dev/null || true
  35. echo ">> 正在重新创建并启动容器..."
  36. # --no-build 确保在服务器上不会意外使用本地代码触发构建
  37. docker compose up -d --no-build server web libreoffice
  38. echo "======================================================="
  39. echo "部署完成!当前服务运行状态:"
  40. docker compose ps
  41. echo "======================================================="