deploy.sh 2.3 KB

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