Montar um volume gitRepo no Azure Container Instances
Saiba como montar um volume gitRepo para clonar um repositório Git em suas instâncias de contêiner.
Nota
A montagem de um volume gitRepo está atualmente restrita a contêineres Linux. Enquanto estamos trabalhando para trazer todos os recursos para contêineres do Windows, você pode encontrar as diferenças de plataforma atuais na visão geral.
volume gitRepo
O volume gitRepo monta um diretório e clona o repositório Git especificado nele durante a criação do contêiner. Usando um volume gitRepo em suas instâncias de contêiner, você pode evitar adicionar o código para fazer isso em seus aplicativos.
Ao montar um volume gitRepo , você pode definir três propriedades para configurar o volume:
Property | Necessário | Descrição |
---|---|---|
repository |
Sim | A URL completa, incluindo http:// ou https:// , do repositório Git a ser clonado. |
directory |
Não | Diretório no qual o repositório deve ser clonado. O caminho não deve conter ou começar com ".. ". Se você especificar ". ", o repositório será clonado no diretório do volume. Caso contrário, o repositório Git é clonado em um subdiretório do nome dado dentro do diretório de volume. |
revision |
Não | O hash de consolidação da revisão a clonar. Se não for especificada, a HEAD revisão será clonada. |
Monte o volume gitRepo: CLI do Azure
Para montar um volume gitRepo ao implantar instâncias de contêiner com a CLI do Azure, forneça os --gitrepo-url
parâmetros e --gitrepo-mount-path
para o comando az container create. Pode especificar opcionalmente o diretório no volume a clonar em (--gitrepo-dir
) e o hash de consolidação da revisão a clonar (--gitrepo-revision
).
Este comando de exemplo clona o aplicativo de exemplo Microsoft aci-helloworld na /mnt/aci-helloworld
instância do contêiner:
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 verificar se o volume gitRepo foi montado, inicie um shell no contêiner com az container exec e liste o diretório:
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
Monte o volume gitRepo: Gerenciador de Recursos
Para montar um volume gitRepo ao implantar instâncias de contêiner com um modelo do Azure Resource Manager, primeiro preencha a volumes
matriz na seção de grupo properties
de contêineres do modelo. Em seguida, para cada contêiner no grupo de contêineres no qual você deseja montar o volume gitRepo , preencha a volumeMounts
matriz na properties
seção da definição de contêiner.
Por exemplo, o modelo do Gerenciador de Recursos a seguir cria um grupo de contêineres que consiste em um único contêiner. O contêiner clona dois repositórios do GitHub especificados pelos blocos de volume gitRepo . O segundo volume inclui propriedades adicionais que especificam um diretório para o qual clonar e o hash de consolidação de uma revisão específica 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 estrutura de diretórios resultante dos dois repositórios clonados definidos no modelo anterior é:
/mnt/repo1/aci-helloworld
/mnt/repo2/my-custom-clone-directory
Para ver um exemplo de implantação de instância de contêiner com um modelo do Azure Resource Manager, consulte Implantar grupos de vários contêineres em instâncias de contêiner do Azure.
Autenticação de repositório Git privada
Para montar um volume gitRepo para um repositório Git privado, especifique as credenciais na URL do repositório. Normalmente, as credenciais estão na forma de um nome de usuário e um token de acesso pessoal (PAT) que concede acesso com escopo ao repositório.
Por exemplo, o parâmetro CLI --gitrepo-url
do Azure para um repositório privado do GitHub seria semelhante ao seguinte (onde "gituser" é o nome de usuário do GitHub e "abcdef1234fdsa4321abcdef" é o token de acesso pessoal do usuário):
--gitrepo-url https://gituser:abcdef1234fdsa4321abcdef@github.com/GitUser/some-private-repository
Para um repositório Git do Azure Repos, especifique qualquer nome de usuário (você pode usar "azurereposuser" como no exemplo a seguir) em combinação com um PAT válido:
--gitrepo-url https://azurereposuser:abcdef1234fdsa4321abcdef@dev.azure.com/your-org/_git/some-private-repository
Para obter mais informações sobre tokens de acesso pessoal para GitHub e Azure Repos, consulte as seguintes orientações:
GitHub: Criando um token de acesso pessoal para a linha de comando
Azure Repos: Criar tokens de acesso pessoal para autenticar o acesso
Próximos passos
Saiba como montar outros tipos de volume em Instâncias de Contêiner do Azure: