Подключение тома gitRepo в службе "Экземпляры контейнеров Azure"
Узнайте, как подключить том gitRepo, чтобы клонировать репозиторий в экземпляры контейнеров.
Примечание.
Подключение тома gitRepo сейчас поддерживается только для контейнеров Linux. Мы работаем над тем, чтобы обеспечить все функции для контейнеров Windows, но для текущей платформы имеются отличия, подробнее о которых можно узнать в обзоре службы.
Том gitRepo
Том gitRepo подключает каталог и клонирует в него указанный репозиторий Git во время создания контейнера. Используя том gitRepo в экземплярах контейнера, можно избежать добавления кода для выполнения этой задачи в приложениях.
После подключения тома gitRepo задайте три свойства, чтобы настроить том.
Свойство | Обязательное поле | Описание: |
---|---|---|
repository |
Да | Полный URL-адрес (включая http:// или https:// ) репозитория Git, который будет клонирован. |
directory |
No | Каталог, в который необходимо клонировать репозиторий. Значение пути не должно содержать знак .. или начинаться с него. Если указан знак . , репозиторий клонируется в каталог тома. В противном случае репозиторий Git клонируется в подкаталог с указанным именем в каталоге томов. |
revision |
No | Зафиксированный хэш версии, которая будет клонирована. Если не указан, клонируется версия HEAD . |
Подключение тома gitRepo: Azure CLI
Чтобы подключить том gitRepo при развертывании экземпляров контейнера с помощью Azure CLI, укажите параметры --gitrepo-url
и --gitrepo-mount-path
в команде az container create. При необходимости можно указать каталог тома, в который будет осуществляться клонирование (--gitrepo-dir
) и хэш фиксации редакции, которая будет клонирована (--gitrepo-revision
).
В этом примере команда клонирует пример приложения Майкрософт aci-helloworld в расположение/mnt/aci-helloworld
в экземпляре контейнера:
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
Чтобы убедиться, что том gitRepo подключен, запустите оболочку в контейнере с помощью команды az container exec и выведите список каталогов.
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: Resource Manager
Чтобы подключить том gitRepo при развертывании экземпляров контейнера с помощью шаблона Azure Resource Manager, в шаблоне сначала нужно заполнить массив volumes
в разделе properties
группы контейнеров. Затем для каждого контейнера в группе контейнеров, в которой нужно подключить том gitRepo, нужно заполнить массив volumeMounts
в разделе properties
определения контейнера.
Например, следующий шаблон Resource Manager создает группу контейнеров, состоящую из одного контейнера. Контейнер клонирует два репозитория GitHub, указанных блоками тома gitRepo. Второй том содержит дополнительные свойства, указывающие каталог для клонирования и зафиксированный хэш определенной версии.
{
"$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"
}
}
]
}
}
]
}
В результате структура каталогов двух клонированных репозиториев, определенных в предыдущем шаблоне, выглядит следующим образом.
/mnt/repo1/aci-helloworld
/mnt/repo2/my-custom-clone-directory
Пример развертывания экземпляра контейнера с помощью шаблона Azure Resource Manager см. в статье Развертывание группы контейнеров.
Проверка подлинности в частном репозитории Git
Чтобы подключить том gitRepo как частный репозиторий Git, укажите учетные данные в URL-адресе репозитория. Как правило, учетные данные представлены в виде имени пользователя и личного маркера доступа (PAT), который предоставляет доступ к репозиторию.
Например, параметр Azure CLI --gitrepo-url
для частного репозитория GitHub будет похож на следующий (где "gituser" — это имя пользователя GitHub, а "abcdef1234fdsa4321abcdef" — это личный маркер доступа пользователя):
--gitrepo-url https://gituser:abcdef1234fdsa4321abcdef@github.com/GitUser/some-private-repository
Для репозитория Git Azure Repos укажите любое имя пользователя (вы можете использовать "azurereposuser", как в следующем примере) в сочетании с действительным PAT.
--gitrepo-url https://azurereposuser:abcdef1234fdsa4321abcdef@dev.azure.com/your-org/_git/some-private-repository
Дополнительные сведения о личных маркерах доступа для GitHub и Azure Repos:
GitHub: создание личных маркеров доступа для командной строки
Azure Repos: создание личных маркеров доступа для аутентификации доступа
Следующие шаги
Сведения о подключении других типов томов в службе "Экземпляры контейнеров Azure" см. в следующих статьях:
- Mount an Azure file share in Azure Container Instances (Подключение файлового ресурса Azure с помощью службы "Экземпляры контейнеров Azure")
- Mount an emptyDir volume in Azure Container Instances (Подключение тома emptyDir в службе "Экземпляры контейнеров Azure")
- Подключение тома secret в службе "Экземпляры контейнеров Azure"