| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #!/bin/bash
- set -e
- # 进入脚本所在目录(确保和 docker-compose.yml 在同一目录)
- cd "$(dirname "$0")"
- echo "======================================================="
- echo "开始在服务器上拉取镜像并一键部署"
- echo "======================================================="
- echo ">> 正在从阿里云镜像库拉取最新的 server 和 web 镜像..."
- # 如果拉取需要密码,请确保服务器上已经执行过 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
- 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-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
- echo ">> 正在重新创建并启动容器..."
- # --no-build 确保在服务器上不会意外使用本地代码触发构建
- docker compose up -d --no-build server web
- echo "======================================================="
- echo "部署完成!当前服务运行状态:"
- docker compose ps
- echo "======================================================="
|