如何从Azure容器注册表拉取Docker镜像并在本地服务器用docker-compose运行
从ACR拉取镜像并在Debian服务器通过Docker Compose运行的解决方案
1. 配置ACR登录凭据并完成服务器登录
- 在Azure DevOps发布流水线的变量组中添加以下变量(将
ACR_PASSWORD设为秘密变量):ACR_NAME:你的Azure容器注册表名称ACR_USERNAME:ACR管理员账户名或有权限的服务主体App IDACR_PASSWORD:ACR管理员密码或服务主体密码
- 在Debian服务器的命令行执行脚本中,先完成Docker登录:
docker login $(ACR_NAME).azurecr.io -u $(ACR_USERNAME) -p $(ACR_PASSWORD)
2. 获取代码仓库中的docker-compose.yml文件
由于你使用ACR作为制品源,无法直接获取代码仓库里的docker-compose.yml,可二选一:
方法A:将docker-compose.yml作为制品上传并下载
- 在构建镜像的CI流水线中,添加步骤将
docker-compose.yml打包(或直接上传)到Azure DevOps通用制品库 - 在发布流水线中添加下载制品步骤,将该文件下载到Debian服务器的部署目录(如
/opt/deploy)
方法B:从Git仓库直接拉取
- 在Debian服务器配置Git访问凭据(如SSH密钥或个人访问令牌),确保无需交互即可拉取代码
- 在脚本中执行拉取命令:
# 首次部署克隆仓库,后续部署替换为git pull git clone <你的Git仓库地址> /opt/app-repo cp /opt/app-repo/docker-compose.yml /opt/deploy/
3. 修正docker-compose.yml中的镜像地址
将文件内的镜像名替换为ACR完整地址,可通过脚本动态修改:
# 替换镜像名,将my-app:latest改为你的ACR镜像地址 sed -i "s|my-app:latest|$(ACR_NAME).azurecr.io/my-app:latest|g" /opt/deploy/docker-compose.yml
4. 拉取镜像并启动服务
在脚本中执行Docker Compose命令完成部署:
# 拉取最新镜像 docker-compose -f /opt/deploy/docker-compose.yml pull # 后台启动服务 docker-compose -f /opt/deploy/docker-compose.yml up -d
前置环境检查(可选)
如果Debian服务器未安装Docker相关工具,可在脚本开头添加安装命令:
sudo apt-get update && sudo apt-get install -y docker.io docker-compose # 将当前用户加入docker组,避免sudo操作 sudo usermod -aG docker $USER newgrp docker
内容的提问来源于stack exchange,提问作者godzkaya
相关产品推荐
相关产品推荐

