如何将多个图像推送到Azure注册表

时间:2019-12-22 01:25:38

标签: azure docker

我有一个要在azure上部署的多容器应用程序,以使用类似于以下内容的docker compose文件创建我正在使用的图像:

version: '3.3'

services:

  app1:
    image: app1
    container_name: "app1"
    ports:
      - "5000:5000"
    restart: always
    build:
      context: ./app1
      dockerfile: Dockerfile

  app2:
    image: app2
    container_name: "app2"
    ports:
      - "5000:5000"
    restart: always
    build:
      context: ./app2
      dockerfile: Dockerfile

这可以帮助我实现流程自动化,但问题是比这之后需要执行的其他每个步骤 为每个图像单独使用命令,在管道中,我有以下步骤:

1)标记图像:

sudo docker tag app1 services.azurecr.io/samples/app1

2)将图像推送到Azure注册表:

sudo docker push services.azurecr.io/samples/app1

3)部署容器:

az container create \
    --name XXX
    --ports  5000 5100 \
    --memory 3 \
    --cpu 1 \
    --azure-file-volume-share-name legaldocuments \
    --azure-file-volume-mount-path /app/data \
    ...
    ...
    ...

是否有一种方法可以在单个文件中包含多个容器?至少标记一部分并推送图像。

2 个答案:

答案 0 :(得分:1)

要将多个图像推送到Azure容器注册表,需要使用注册表的loginServer名称标记它们。

按照步骤

第1步:您需要在这些图像上附加标签,

docker tag azurecontainerservicepoc acrarampoc/azurecontainerservicepoc:dev

步骤2:将Docker映像推送到Azure容器注册表

docker push your_acr_name.azurecr.io/elasticsearch:6.2.4

然后,为了推送多个图像,您可以使用Bash脚本尝试以下操作,

您的情况应该是:

docker push --all-tags   your_acr_name.azurecr.io 

答案 1 :(得分:1)

您可以使用docker任务来实现(kinda),在gui中也可以实现

- task: Docker@2
  displayName: Push image
  inputs:
    containerRegistry: |
      $(dockerHub)
    repository: $(imageName)
    command: push
    tags: |
      test1
      test2
      etc

我不认为等效的方法可以用于构建,因此您必须使用带有循环的脚本或要构建的多个构建步骤