Montaje de un volumen de gitRepo en Azure Container Instances
Obtenga información acerca de cómo montar un volumen de gitRepo para clonar un repositorio de GIT en las instancias de Container Instances.
Nota
El montaje de un volumen de gitRepo está actualmente restringido a los contenedores Linux. Aunque se está trabajando para incorporar todas las características a los contenedores Windows, puede consultar las diferencias actuales entre plataformas en la introducción.
Volumen de gitRepo
El volumen de gitRepo monta un directorio y clona el repositorio de Git especificado en él durante la creación del contenedor. Al usar un volumen de gitRepo en las instancias de Container Instances, puede evitar agregar el código para hacerlo en las aplicaciones.
Al montar un volumen de gitRepo, puede establecer tres propiedades para configurar el volumen:
Propiedad | Obligatorio | Descripción |
---|---|---|
repository |
Sí | Dirección URL completa, incluidos http:// o https:// , del repositorio de GIT que se va a clonar. |
directory |
No | Directorio en el que se debe clonar el repositorio. La ruta de acceso no debe contener ".. " ni empezar por ello. Si especifica ". ", el repositorio se clona en el directorio del volumen. De lo contrario, el repositorio de GIT se clona en un subdirectorio del nombre indicado dentro del directorio del volumen. |
revision |
No | Hash de confirmación de la revisión que se va a clonar. Si no se especifica, se clona la revisión de HEAD . |
Montaje de un volumen de gitRepo: Azure CLI
Para montar un volumen de gitRepo al implementar instancias de contenedor con la CLI de Azure, utilice los parámetros --gitrepo-url
y --gitrepo-mount-path
en el comando az container create. Opcionalmente, puede especificar el directorio del volumen en que va a realizar la clonación (--gitrepo-dir
) y el hash de confirmación de la revisión que se va a clonar (--gitrepo-revision
).
Este comando de ejemplo clona la aplicación de ejemplo aci-helloworld de Microsoft en /mnt/aci-helloworld
en la instancia de contenedor:
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
Para comprobar que se ha montado el volumen de gitRepo, inicie un shell en el contenedor con az container exec y enumere el directorio:
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
Montaje de un volumen de gitRepo: Resource Manager
Para montar un volumen de GitRepo al implementar instancias de contenedor con un plantilla de Azure Resource Manager, rellene la matriz volumes
en la sección properties
del grupo contenedor de la plantilla. Luego, en todos los contenedores del grupo de contenedores en los que desee montar el volumen de GitRepo, rellene la matriz volumeMounts
en la sección properties
de la definición del contenedor.
Por ejemplo, la siguiente plantilla de Resource Manager crea un grupo de contenedores que consta de un único contenedor. El contenedor clona dos repositorios de GitHub especificados por los bloques del volumen de gitRepo. El segundo volumen incluye propiedades adicionales que especifican un directorio en el que clonar y el hash de confirmación de una revisión específica que se va a clonar.
{
"$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"
}
}
]
}
}
]
}
A continuación, se muestra la estructura del directorio resultante de los dos repositorios clonados definidos en la plantilla anterior:
/mnt/repo1/aci-helloworld
/mnt/repo2/my-custom-clone-directory
Para ver un ejemplo de implementación de instancias de contenedor con una plantilla de Azure Resource Manager, consulte Implementación de grupos de varios contenedores en Azure Container Instances.
Autenticación del repositorio de Git privado
Para montar un volumen de gitRepo para un repositorio Git privado, especifique las credenciales en la dirección URL del repositorio. Normalmente, las credenciales tienen forma de un nombre de usuario y un token de acceso personal (PAT) que concede acceso de ámbito al repositorio.
Por ejemplo, el parámetro --gitrepo-url
de la CLI de Azure para un repositorio GitHub privado tendría un aspecto similar al siguiente (donde "gituser" es el nombre de usuario de GitHub y "abcdef1234fdsa4321abcdef" es el token de acceso personal del usuario):
--gitrepo-url https://gituser:abcdef1234fdsa4321abcdef@github.com/GitUser/some-private-repository
Para ver un repositorio GIT de Azure Repos, especifique cualquier nombre de usuario (puede usar "azurereposuser" como en el ejemplo siguiente) en combinación con un token de acceso personal válido:
--gitrepo-url https://azurereposuser:abcdef1234fdsa4321abcdef@dev.azure.com/your-org/_git/some-private-repository
Para más información acerca de los tokens de acceso personal para GitHub y Azure Repos, vea lo siguiente:
GitHub: Creating a personal access token for the command line (Creación de un token de acceso personal para la línea de comandos)
Azure Repos: Create personal access tokens to authenticate access (Creación de tokens de acceso personales para autenticar el acceso)
Pasos siguientes
Aprenda a montar otros tipos de volúmenes en Azure Container Instances: