Dela via


Montera en gitRepo-volym i Azure Container Instances

Lär dig hur du monterar en gitRepo-volym för att klona en Git-lagringsplats till dina containerinstanser.

Kommentar

Montering av en gitRepo-volym är för närvarande begränsad till Linux-containrar. Medan vi arbetar med att ta alla funktioner till Windows-containrar kan du hitta aktuella plattformsskillnader i översikten.

gitRepo-volym

GitRepo-volymen monterar en katalog och klonar den angivna Git-lagringsplatsen till den när containern skapas. Genom att använda en gitRepo-volym i dina containerinstanser kan du undvika att lägga till koden för att göra det i dina program.

När du monterar en gitRepo-volym kan du ange tre egenskaper för att konfigurera volymen:

Property Obligatoriskt Beskrivning
repository Ja Den fullständiga URL:en, inklusive http:// eller https://, för Git-lagringsplatsen som ska klonas.
directory Nej Katalog till vilken lagringsplatsen ska klonas. Sökvägen får inte innehålla eller börja med "..". Om du anger "." klonas lagringsplatsen till volymens katalog. Annars klonas Git-lagringsplatsen till en underkatalog till det angivna namnet i volymkatalogen.
revision Nej Incheckningshash för revisionen som ska klonas. Om den är ospecificerad klonas revisionen HEAD .

Montera gitRepo-volym: Azure CLI

Om du vill montera en gitRepo-volym när du distribuerar containerinstanser med Azure CLI anger du parametrarna --gitrepo-url och --gitrepo-mount-path till kommandot az container create . Du kan också ange katalogen i volymen som ska klonas till (--gitrepo-dir) och incheckningshash för revisionen som ska klonas (--gitrepo-revision).

Det här exempelkommandot klonar Exempelprogrammet Microsoft aci-helloworld i /mnt/aci-helloworld containerinstansen:

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

Om du vill kontrollera att gitRepo-volymen har monterats startar du ett gränssnitt i containern med az container exec och listar katalogen:

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

Montera gitRepo-volym: Resource Manager

Om du vill montera en gitRepo-volym när du distribuerar containerinstanser med en Azure Resource Manager-mall fyller du först i matrisen volumes i avsnittet containergrupp properties i mallen. För varje container i containergruppen där du vill montera gitRepo-volymen fyller du sedan i matrisen volumeMounts properties i avsnittet i containerdefinitionen.

Följande Resource Manager-mall skapar till exempel en containergrupp som består av en enda container. Containern klonar två GitHub-lagringsplatser som anges av gitRepo-volymblocken. Den andra volymen innehåller ytterligare egenskaper som anger en katalog att klona till och incheckningshash för en specifik revision att klona.

{
  "$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"
            }
          }
        ]
      }
    }
  ]
}

Den resulterande katalogstrukturen för de två klonade lagringsplatserna som definierats i föregående mall är:

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

Ett exempel på distribution av containerinstanser med en Azure Resource Manager-mall finns i Distribuera grupper med flera containrar i Azure Container Instances.

Privat Git-lagringsplatsautentisering

Om du vill montera en gitRepo-volym för en privat Git-lagringsplats anger du autentiseringsuppgifter i lagringsplatsens URL. Vanligtvis är autentiseringsuppgifterna i form av ett användarnamn och en personlig åtkomsttoken (PAT) som ger begränsad åtkomst till lagringsplatsen.

Azure CLI-parametern --gitrepo-url för en privat GitHub-lagringsplats ser till exempel ut ungefär så här (där "gituser" är GitHub-användarnamnet och "abcdef1234fdsa4321abcdef" är användarens personliga åtkomsttoken):

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

För en Git-lagringsplats för Azure Repos anger du valfritt användarnamn (du kan använda "azurereposuser" som i följande exempel) i kombination med en giltig PAT:

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

Mer information om personliga åtkomsttoken för GitHub och Azure Repos finns i följande:

GitHub: Skapa en personlig åtkomsttoken för kommandoraden

Azure-lagringsplatser: Skapa personliga åtkomsttoken för att autentisera åtkomst

Nästa steg

Lär dig hur du monterar andra volymtyper i Azure Container Instances: