Montar um volume gitRepo em Instâncias de Contêiner do Azure
Saiba como montar um volume gitRepo para clonar um repositório Git em suas instâncias de contêiner.
Observação
A montagem de um volume gitRepo está atualmente restrita a contêineres do Linux. Enquanto trabalhamos para trazer todos os recursos para os 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.
Quando você monta um volume gitRepo, você pode definir três propriedades para configurar o volume:
Propriedade | Obrigatório | Descrição |
---|---|---|
repository |
Sim | A URL completa, incluindo http:// ou https:// , do repositório Git a ser clonado. |
directory |
Não | O diretório no qual o repositório deve ser clonado. O caminho não deve conter nem começar com ".. ". Se você especificar ". ", o repositório será clonado no diretório do volume. Caso contrário, o repositório do Git será clonado em um subdiretório com o nome fornecido, dentro do diretório do volume. |
revision |
Não | O hash de confirmação da revisão a ser clonada. Se não for especificado, a revisão HEAD será clonada. |
Volume de montagem gitRepo: CLI do Azure
Para montar um volume gitRepo quando você implanta instâncias de contêiner com o CLI do Azure, forneça os parâmetros --gitrepo-url
e --gitrepo-mount-path
para o az criar o comando . Você pode opcionalmente especificar o diretório dentro do volume para clonar em (--gitrepo-dir
) e o hash de confirmação da revisão a ser clonado (--gitrepo-revision
).
Este exemplo de comando clona o aplicativo de exemplo aci helloworld da Microsoft em /mnt/aci-helloworld
na instância de 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 exec de contêiner az 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
Volume de montagem GitRepo: o Gerenciador de recursos
Para montar um volume gitRepo quando você implanta instâncias de contêiner com uma modelo do Azure Resource Manager, primeiro preencha a seção da volumes
matriz no grupo de contêiner properties
do modelo. Em seguida, para cada contêiner do grupo de contêineres no qual você deseja montar o volume gitRepo, popule a matriz volumeMounts
na seção properties
da definição de contêiner.
Por exemplo, o modelo do Resource Manager 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 do gitRepo. O segundo volume inclui propriedades adicionais, especificando um diretório para o qual clonar e também o hash de confirmação de uma revisão específica a ser clonada.
{
"$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ório resultante dos dois repositórios clonados definida 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 com vários contêineres em Instâncias de Contêiner do Azure.
Autenticação do repositório Git privado
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 PAT (token de acesso pessoal) que concedem acesso com escopo ao repositório.
Por exemplo, o parâmetro --gitrepo-url
da CLI do Azure para um repositório do GitHub privado deve assemelhar-se ao seguinte (em que "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 do Azure Repos Git, 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 o GitHub e o Azure Repos, confira as seguintes diretrizes:
GitHub: Criar um token de acesso pessoal para a linha de comando
Repositórios do Azure: criar tokens de acesso pessoal para autenticar o acesso
Próximas etapas
Saiba como montar outros tipos de volume em Instâncias de Contêiner do Azure: