如何在 Azure DevOps 中使用 docker 生成任务

How to use docker build task in the Azure devops

提问人:cloudcop 提问时间:3/21/2023 更新时间:3/21/2023 访问量:262

问:

我正在尝试通过Azure DevOps构建docker映像,我正在使用示例应用程序(Node Js)来构建标记并推送到azure acr,不幸的是,它无法找到映像

在我的 yaml 配置中,我使用 AZ CLI 任务来标记和推送映像,但是在推送它时失败了 azure acr。下面是我的 yaml 配置片段,我是否遗漏了什么?

Image is built using docker task 
 
 task: Docker@2
  displayName: Build an image
  inputs:
    command: build
    repository: azac/myapp
    Dockerfile: $(Build.SourcesDirectory)/Dockerfile
    tags: latest

output:
REPOSITORY            TAG         IMAGE ID       CREATED          SIZE
azac/myapp   latest      22ad073063a9   23 seconds ago   133MB
node                  18          37b4077cbd8a   12 days ago      997MB
node                  18-alpine   f520ad35ba68   12 days ago      175MB
moby/buildkit         latest      477ce8a5e273   2 weeks ago      168MB
node                  14          cedb9f0d0498   2 weeks ago      912MB
node                  16          9e98bbbbe8e1   2 weeks ago      910MB
ubuntu                20.04       61c45d0e9798   2 weeks ago      72.8MB
buildpack-deps        buster      dd092f9559e9   2 weeks ago      803MB
buildpack-deps        bullseye    7f6175124be9   2 weeks ago      834MB
ubuntu                22.04       74f2314a03de   2 weeks ago      77.8MB
debian                10          f03c282363a3   2 weeks ago      114MB
debian                11          72b624312240   2 weeks ago      124MB
ubuntu                18.04       b89fba62bc15   2 weeks ago      63.1MB
node                  16-alpine   fa7e19c4371c   3 weeks ago      117MB
node                  14-alpine   4802e63f08a5   4 weeks ago      119MB
alpine                3.14        6dff1269bc79   5 weeks ago      5.61MB
alpine                3.15        5ce65d7b0fde   5 weeks ago      5.59MB
alpine                3.16        dfd21b5a31f5   5 weeks ago      5.54MB
Login Succeeded
Error response from daemon: No such image: myapp:latest
The push refers to repository [azac.azurecr.io/myapp]
An image does not exist locally with the tag: azac.azurecr.io/myapp

我在这里使用了一些关于堆栈溢出链接的参考

task: AzureCLI@2   inputs:
    azureSubscription: 'azdo Service Connetion'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      docker images
      az acr login --name azac
      docker tag   myapp azac.azurecr.io/myapp:latest
      docker push  azac.azurecr.io/myapp:latest
Azure Dockerfile ACR

评论


答:

1赞 Nathan Carlson - MSFT 3/21/2023 #1

在任务中,您将图像标记为,但在任务中,您随后引用了 。Docker@2azac/myapp:latestAzureCLI@2myapp:latest

我建议将您的任务更改为将存储库设置为,然后您的任务脚本可以只执行登录和推送,无需标记。Docker@2azac.azurecr.io/myappAzureCLI@2

评论

0赞 cloudcop 3/21/2023
谢谢内森,现在它起作用了,是的,这是一个错别字,当我仔细检查时我得到了它,但是我删除了 azac/myapp 并仅替换为 myapp 以避免错误 存储库标签 图像 ID 已创建 大小 myapp 最新 e6c8cfc78987 31 秒前 133MB 节点 14 cedb9f0d0498 2 周前 912MB 登录成功 推送是指存储库 [azac.azurecr.io/myapp] 1aaa3c14361c: 准备