Een gitRepo-volume koppelen in Azure Container Instances

Meer informatie over het koppelen van een gitRepo-volume om een Git-opslagplaats te klonen in uw containerinstanties.

Notitie

Het koppelen van een gitRepo-volume is momenteel beperkt tot Linux-containers. Hoewel we alle functies naar Windows-containers willen brengen, kunt u de huidige platformverschillen vinden in het overzicht.

gitRepo-volume

Het gitRepo-volume koppelt een map en kloont de opgegeven Git-opslagplaats erin tijdens het maken van de container. Door een gitRepo-volume in uw containerinstanties te gebruiken, kunt u voorkomen dat u de code hiervoor toevoegt in uw toepassingen.

Wanneer u een gitRepo-volume koppelt, kunt u drie eigenschappen instellen om het volume te configureren:

Eigenschappen Vereist Omschrijving
repository Ja De volledige URL, inclusief http:// of https://, van de Git-opslagplaats die moet worden gekloond.
directory Nee Map waarin de opslagplaats moet worden gekloond. Het pad mag niet bevatten of beginnen met '..'. Als u '.' opgeeft, wordt de opslagplaats gekloond naar de map van het volume. Anders wordt de Git-opslagplaats gekloond naar een submap van de opgegeven naam in de volumemap.
revision Nee De doorvoer-hash van de revisie die moet worden gekloond. Indien niet opgegeven, wordt de HEAD revisie gekloond.

GitRepo-volume koppelen: Azure CLI

Als u een gitRepo-volume wilt koppelen wanneer u containerinstanties implementeert met de Azure CLI, geeft u de --gitrepo-url en --gitrepo-mount-path parameters op voor de opdracht az container create . U kunt desgewenst de map binnen het volume opgeven om te klonen in (--gitrepo-dir) en de doorvoer-hash van de revisie die moet worden gekloond (--gitrepo-revision).

Met deze voorbeeldopdracht wordt de voorbeeldtoepassing Microsoft aci-helloworld gekloond /mnt/aci-helloworld in de containerinstantie:

az container create \
    --resource-group myResourceGroup \
    --name hellogitrepo \
    --image mcr.microsoft.com/azuredocs/aci-helloworld \
    --dns-name-label aci-demo \
    --ports 80 \
    --gitrepo-url https://github.com/Azure-Samples/aci-helloworld \
    --gitrepo-mount-path /mnt/aci-helloworld

Als u wilt controleren of het gitRepo-volume is gekoppeld, start u een shell in de container met az container exec en geeft u de map weer:

az container exec --resource-group myResourceGroup --name hellogitrepo --exec-command /bin/sh
/usr/src/app # ls -l /mnt/aci-helloworld/
total 16
-rw-r--r--    1 root     root           144 Apr 16 16:35 Dockerfile
-rw-r--r--    1 root     root          1162 Apr 16 16:35 LICENSE
-rw-r--r--    1 root     root          1237 Apr 16 16:35 README.md
drwxr-xr-x    2 root     root          4096 Apr 16 16:35 app

GitRepo-volume koppelen: Resource Manager

Als u een gitRepo-volume wilt koppelen wanneer u containerinstanties implementeert met een Azure Resource Manager-sjabloon, vult u eerst de volumes matrix in de sectie containergroep properties van de sjabloon. Vul vervolgens voor elke container in de containergroep waarin u het gitRepo-volume wilt koppelen de volumeMounts matrix in de properties sectie van de containerdefinitie.

Met de volgende Resource Manager-sjabloon wordt bijvoorbeeld een containergroep gemaakt die bestaat uit één container. De container kloont twee GitHub-opslagplaatsen die zijn opgegeven door de gitRepo-volumeblokken . Het tweede volume bevat aanvullende eigenschappen waarmee een map moet worden gekloond en de doorvoer-hash van een specifieke revisie die moet worden gekloond.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "container1name": "aci-tutorial-app",
    "container1image": "mcr.microsoft.com/azuredocs/aci-helloworld"
  },
  "resources": [
    {
      "type": "Microsoft.ContainerInstance/containerGroups",
      "apiVersion": "2021-03-01",
      "name": "volume-demo-gitrepo",
      "location": "[resourceGroup().location]",
      "properties": {
        "containers": [
          {
            "name": "[variables('container1name')]",
            "properties": {
              "image": "[variables('container1image')]",
              "resources": {
                "requests": {
                  "cpu": 1,
                  "memoryInGb": 1.5
                }
              },
              "ports": [
                {
                  "port": 80
                }
              ],
              "volumeMounts": [
                {
                  "name": "gitrepo1",
                  "mountPath": "/mnt/repo1"
                },
                {
                  "name": "gitrepo2",
                  "mountPath": "/mnt/repo2"
                }
              ]
            }
          }
        ],
        "osType": "Linux",
        "ipAddress": {
          "type": "Public",
          "ports": [
            {
              "protocol": "tcp",
              "port": "80"
            }
          ]
        },
        "volumes": [
          {
            "name": "gitrepo1",
            "gitRepo": {
              "repository": "https://github.com/Azure-Samples/aci-helloworld"
            }
          },
          {
            "name": "gitrepo2",
            "gitRepo": {
              "directory": "my-custom-clone-directory",
              "repository": "https://github.com/Azure-Samples/aci-helloworld",
              "revision": "d5ccfcedc0d81f7ca5e3dbe6e5a7705b579101f1"
            }
          }
        ]
      }
    }
  ]
}

De resulterende mapstructuur van de twee gekloonde opslagplaatsen die in de voorgaande sjabloon zijn gedefinieerd, is:

/mnt/repo1/aci-helloworld
/mnt/repo2/my-custom-clone-directory

Zie Meerdere containergroepen implementeren in Azure Container Instances voor een voorbeeld van een implementatie van een containerinstantie met een Azure Resource Manager-sjabloon.

Verificatie van privé-Git-opslagplaats

Als u een gitRepo-volume voor een persoonlijke Git-opslagplaats wilt koppelen, geeft u referenties op in de URL van de opslagplaats. Referenties hebben doorgaans de vorm van een gebruikersnaam en een persoonlijk toegangstoken (PAT) dat scoped toegang verleent tot de opslagplaats.

De Azure CLI-parameter --gitrepo-url voor een persoonlijke GitHub-opslagplaats lijkt bijvoorbeeld op het volgende (waarbij 'gituser' de GitHub-gebruikersnaam is en 'abcdef1234fdsa4321abcdef' het persoonlijke toegangstoken van de gebruiker is):

--gitrepo-url https://gituser:abcdef1234fdsa4321abcdef@github.com/GitUser/some-private-repository

Geef voor een Git-opslagplaats voor Azure-opslagplaatsen een gebruikersnaam op (u kunt 'azurereposuser' gebruiken zoals in het volgende voorbeeld) in combinatie met een geldige PAT:

--gitrepo-url https://azurereposuser:abcdef1234fdsa4321abcdef@dev.azure.com/your-org/_git/some-private-repository

Zie het volgende voor meer informatie over persoonlijke toegangstokens voor GitHub en Azure-opslagplaatsen:

GitHub: Een persoonlijk toegangstoken maken voor de opdrachtregel

Azure-opslagplaatsen: persoonlijke toegangstokens maken om toegang te verifiëren

Volgende stappen

Meer informatie over het koppelen van andere volumetypen in Azure Container Instances: