Mount a gitRepo volume in Azure Container Instances (Montare un volume gitRepo in Istanze di Azure Container)
Informazioni su come montare un volume gitRepo per clonare un repository Git in Istanze di Container.
Nota
Il montaggio di un volume gitRepo è attualmente limitato ai contenitori di Linux. Mentre stiamo lavorando per portare tutte le funzionalità nei contenitori Windows, puoi trovare le differenze correnti della piattaforma nella panoramica.
Volume gitRepo
Il volume gitRepo monta una directory e clona il repository Git specificato durante la creazione del contenitore. Usando un volume gitRepo in Istanze di Container, è possibile evitare di aggiungere il codice per eseguire questa operazione nelle applicazioni.
Quando si monta un volume gitRepo, è possibile impostare tre proprietà per configurare il volume:
Proprietà | Richiesto | Descrizione |
---|---|---|
repository |
Sì | URL completo, incluso http:// o https:// , del repository Git da clonare. |
directory |
No | Directory in cui clonare il repository. Il percorso non deve contenere né iniziare con ".. ". Se si specifica ". ", il repository viene clonato nella directory del volume. In caso contrario il repository Git viene clonato in una sottodirectory del nome dato all'interno della directory del volume. |
revision |
No | Hash commit della revisione da clonare. Se non specificato, la revisione HEAD viene clonata. |
Montare un volume gitRepo: interfaccia della riga di comando di Azure
Per montare un volume gitRepo quando si distribuiscono le istanze di contenitore con l'interfaccia della riga di comando di Azure, fornire i parametri --gitrepo-url
e --gitrepo-mount-path
al comando az container create. Facoltativamente, è possibile specificare la directory del volume in cui eseguire la clonazione (--gitrepo-dir
) e l'hash commit della revisione da clonare (--gitrepo-revision
).
Questo comando di esempio clona l'applicazione /mnt/aci-helloworld
di esempio Microsoft aci-helloworld nell'istanza del contenitore:
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
Per verificare che il volume gitRepo sia stato montato, avviare una shell nel contenitore con az container exec ed elencare la directory:
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
Montare un volume gitRepo: Resource Manager
Per montare un volume gitRepo quando si distribuiscono le istanze di contenitore con un modello di Azure Resource Manager, popolare la matrice volumes
nella sezione properties
del gruppo di contenitore del modello. Successivamente, per ogni contenitore del gruppo di contenitori in cui si desidera montare il volume gitRepo, popolare la matrice volumeMounts
nella sezione properties
della definizione del contenitore.
Ad esempio, il modello di Resource Manager seguente crea un gruppo di contenitori costituito da un solo contenitore. Il contenitore clona due repository GitHub specificati dai blocchi del volume gitRepo. Il secondo volume include proprietà aggiuntive che specificano una directory in cui eseguire la clonazione e l'hash commit di una revisione specifica da clonare.
{
"$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 struttura della directory risultante dei due repository clonati definiti nel modello precedente è:
/mnt/repo1/aci-helloworld
/mnt/repo2/my-custom-clone-directory
Per un esempio di distribuzione di Istanze di Container con un modello di Azure Resource Manager, vedere Deploy multi-container groups in Azure Container Instances (Distribuire gruppi multicontenitore in Istanze di Container Azure).
Autenticazione del repository privato
Per montare un volume gitRepo per un repository Git privato, specificare le credenziali nell'URL del repository. In genere, le credenziali sono sotto forma di un nome utente e un token di accesso personale (PAT) che concede l'accesso con ambito al repository.
Ad esempio, il parametro dell'interfaccia della riga di comando di Azure --gitrepo-url
per un repository di GitHub privato sarà simile al seguente (dove "gituser" è il nome utente di GitHub e "abcdef1234fdsa4321abcdef" è il token di accesso personale dell'utente):
--gitrepo-url https://gituser:abcdef1234fdsa4321abcdef@github.com/GitUser/some-private-repository
Per un repository Git di Azure Repos, specificare il nome utente (come nell'esempio seguente, è possibile usare "azurereposuser") in combinazione con un token di accesso personale valido:
--gitrepo-url https://azurereposuser:abcdef1234fdsa4321abcdef@dev.azure.com/your-org/_git/some-private-repository
Per altre informazioni sui token di accesso personali per GitHub e Azure Repos, vedere le indicazioni seguenti:
GitHub: Creazione di un token di accesso personale per la riga di comando
Azure Repos: Create personal access tokens to authenticate access (Creare token di accesso personale per autenticare l'accesso)
Passaggi successivi
Informazioni su come montare altri tipi di volume in Istanze di Azure Container:
- Mount an Azure file share in Azure Container Instances (Montare una condivisione file di Azure in Istanze di Azure Container)
- Mount an emptyDir volume in Azure Container Instances (Montare un volume emptyDir in Istanze di Azure Container)
- Mount a secret volume in Azure Container Instances (Montare un volume segreto in Istanze di Azure Container)