Monter un volume GitRepo dans Azure Container Instances

Découvrez comment monter un volume GitRepo pour cloner un référentiel Git dans vos instances de conteneurs.

Notes

Le montage d’un volume GitRepo est actuellement limité aux conteneurs Linux. Nous travaillons actuellement à proposer toutes ces fonctionnalités dans des conteneurs Windows. En attendant, nous vous invitons à découvrir les différences actuelles de la plateforme dans la Vue d’ensemble.

Volumes GitRepo

Le volume gitRepo monte un répertoire et clone le référentiel Git spécifié dans celui-ci pendant la création de conteneur. L’utilisation d’un volume GitRepo dans vos instances de conteneur permet d’éviter d’ajouter du code à cette fin dans vos applications.

Lorsque vous montez un volume GitRepo, vous pouvez définir trois propriétés pour le configurer :

Propriété Obligatoire Description
repository Oui URL complète incluant http:// ou https:// du référentiel Git à cloner.
directory Non Répertoire dans lequel le référentiel doit être cloné. Le chemin d’accès ne peut pas contenir ou commencer par « .. ». Si vous spécifiez « . », le référentiel est cloné dans le répertoire du volume. Autrement, le référentiel Git est cloné dans un sous-répertoire du nom spécifié à l’intérieur du répertoire de volume.
revision Non Hachage de validation de la révision à cloner. À défaut de spécification, la révision HEAD est clonée.

Monter un volume gitRepo : Azure CLI

Pour monter un volume gitRepo lorsque vous déployez des instances de conteneurs avec Azure CLI, fournissez les paramètres --gitrepo-url et --gitrepo-mount-path à la commande az container create. Vous pouvez éventuellement spécifier le répertoire dans le volume où effectuer le clonage (--gitrepo-dir) et le hachage de validation de la révision à cloner (--gitrepo-revision).

Cet exemple de commande clone l’exemple d’application Microsoft aci-helloworld dans /mnt/aci-helloworld au sein de l’instance de conteneur :

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

Pour vérifier que le volume gitRepo a été monté, lancez un interpréteur de commandes dans le conteneur avec az container exec et dressez la liste du répertoire :

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

Monter un volume gitRepo : Gestionnaire des ressources

Pour monter un volume gitRepo lorsque vous déployez des instances de conteneurs avec un modèle Azure Resource Manager, commencez par renseigner le tableau volumes dans la section properties du groupe de conteneurs du modèle. Ensuite, pour chaque conteneur du groupe de conteneurs dans lequel vous souhaitez monter le volume GitRepo, renseignez le tableau volumeMounts dans la section properties de la définition de conteneur.

Par exemple, le modèle Resource Manager suivant crée un groupe de conteneurs consistant en un seul conteneur. Le conteneur clone deux référentiels GitHub spécifiés par les blocs de volume GitRepo. Le deuxième volume inclut des propriétés supplémentaires spécifiant un répertoire vers lequel cloner, ainsi que le hachage de validation d’une révision spécifique à cloner.

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

La structure ainsi obtenue de répertoire des deux référentiels clonés définis dans le modèle précédent est la suivante :

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

Pour voir un exemple de déploiement d’instance de conteneur avec un modèle Azure Resource Manager, consultez Déployer des groupes de plusieurs conteneurs dans Azure Container Instances.

Authentification des dépôts Git privés

Pour monter un volume gitRepo pour un dépôt Git privé, spécifiez les informations d’identification dans l’URL du dépôt. En règle générale, les informations d’identification se présentent sous la forme d’un nom d’utilisateur et d’un jeton d’accès personnel (PAT) qui accorde un accès limité au dépôt.

Par exemple, le paramètre --gitrepo-url de l’interface de ligne de commande Azure pour un dépôt GitHub privé doit ressembler à ce qui suit (où « gituser » est le nom d’utilisateur GitHub et « abcdef1234fdsa4321abcdef » est le jeton d’accès personnel de l’utilisateur) :

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

Pour un dépôt Git Azure Repos, spécifiez n’importe quel nom d’utilisateur (vous pouvez utiliser « azurereposuser » comme dans l’exemple suivant) en association avec un jeton PAT valide :

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

Pour plus d’informations sur les jetons d’accès personnel pour GitHub et Azure Repos, consultez les articles suivants :

GitHub : Creating a personal access token for the command line

Azure Repos : Créer des jetons d’accès personnel pour authentifier l’accès

Étapes suivantes

Découvrez comment monter d’autres types de volumes dans Azure Container Instances :