在 Azure 容器執行個體中掛接 gitRepo 磁碟區
了解如何掛接 gitRepo 磁碟區,以將 Git 存放庫複製到您的容器執行個體中。
注意
目前只有 Linux 容器才能掛接 gitRepo 磁碟區。 在我們設法將所有功能導入 Windows 容器的同時,您可先在概觀中找到目前的平台差異。
gitRepo 磁碟區
gitRepo 磁碟區會掛接目錄,並在容器建立期間將指定的 Git 存放庫複製到其中。 透過在您的容器執行個體中使用 gitRepo 磁碟區,您可以避免在您的應用程式中加入程式碼。
當您掛接 gitRepo 磁碟區時,您可以設定三個屬性來設定磁碟區:
屬性 | 必要 | 描述: |
---|---|---|
repository |
Yes | 要複製之 Git 存放庫的完整 URL,包括 http:// 或 https:// 。 |
directory |
No | 要在其中複製存放庫的目錄。 路徑不能包含或開頭為 ".. "。 如果您指定 ". ",存放庫會複製到磁碟區的目錄中。 否則,Git 存放庫會複製到磁碟區目錄內指定名稱的子目錄中。 |
revision |
No | 要複製之修訂的認可雜湊。 如果未指定,則 HEAD 修訂已複製。 |
掛接 gitRepo 磁碟區:Azure CLI
當您使用 Azure CLI 部署容器執行個體時,若要掛接 gitRepo 磁碟區,請將 --gitrepo-url
和 --gitrepo-mount-path
參數提供給 az container create 命令。 您可以選擇性地指定磁碟區內要複製存放庫到其中的目錄 (--gitrepo-dir
),以及要複製的修訂認可雜湊 (--gitrepo-revision
)。
此範例命令會將 Microsoft 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 來啟動容器中的 Shell 並列出目錄:
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
當您使用 Azure Resource Manager 範本部署容器執行個體時,若要掛接 gitRepo 磁碟區,請先在範本的容器群組 properties
區段中填入 volumes
陣列。 然後,針對您想要掛接 gitRepo 磁碟區所在容器群組中的每個容器,填入容器定義 properties
區段中的 volumeMounts
陣列。
例如,下列 Resource Manager 範本會建立一個由單一容器組成的容器群組。 容器會複製由 gitRepo 磁碟區區塊所指定的兩個 GitHub 存放庫。 第二個磁碟區包含指定要複製到其中之目錄的其他屬性,和要複製之指定修訂的認可雜湊。
{
"$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 範本來查看容器執行個體部署範例,請參閱在 Azure 容器執行個體中部署多個容器群組。
私人 Git 存放庫驗證
若要為私人 Git 存放庫掛接 gitRepo 磁碟區,請在存放庫 URL 中指定認證。 通常,認證的形式是使用者名稱和個人存取權杖 (PAT),可授與存放庫的有限範圍存取。
例如,私人 GitHub 存放庫的 Azure CLI --gitrepo-url
參數會類似下列項目 (其中 "gituser" 是 GitHub 使用者名稱,"abcdef1234fdsa4321abcdef" 是使用者的個人存取權杖):
--gitrepo-url https://gituser:abcdef1234fdsa4321abcdef@github.com/GitUser/some-private-repository
針對 Azure Repos Git 存放庫,指定任何使用者名稱 (您可以如同下列範例一樣使用 "azurereposuser") 與有效的 PAT 搭配使用:
--gitrepo-url https://azurereposuser:abcdef1234fdsa4321abcdef@dev.azure.com/your-org/_git/some-private-repository
如需 GitHub 和 Azure Repos 個人存取令牌的詳細資訊,請參閱下列指引:
GitHub:針對命令列建立個人存取權杖
Azure Repos:建立個人存取權杖來驗證存取
下一步
了解如何在 Azure 容器執行個體中掛接其他類型的磁碟區: