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 instructions suivantes :
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 :