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 de volgende richtlijnen 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: