Azure 文件共享路径与使用 ARM 模板的容器实例卷路径映射

Azure fileshare path with container instance volume path mapping using ARM templates

有没有人成功地将 Azure 文件共享路径映射与容器卷路径进行映射。我专门寻找 Allure Docker 容器安装在 azure 中并将容器卷路径映射到 Azurefile 共享路径。

我用过ARM模板,也用过yml文件。但我找不到 Azure 在线文档中定义或解释的安装卷路径。

我还看到了一个选项,可以创建自己的容器并将其托管在 Azure 容器注册表中,然后他们可以使用 docker-compose 文件来映射卷路径。这不是我想要的。我不想在 ACR 中托管容器。我一直在使用第三方容器。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "containerGroups_tst_tf_allure_report_api_aci_name": {
      "defaultValue": "tst-tf-allure-report-api-aci",
      "type": "String"
    }
  },
  "variables": {},
  "resources": [
    {
      "type": "Microsoft.ContainerInstance/containerGroups",
      "apiVersion": "2019-12-01",
      "name": "[parameters('containerGroups_tst_tf_allure_report_api_aci_name')]",
      "location": "[resourceGroup().location]",
      "properties": {
        "sku": "Standard",
        "containers": [
          {
            "name": "[parameters('containerGroups_tst_tf_allure_report_api_aci_name')]",
            "properties": {
              "image": "frankescobar/allure-docker-service",
              "ports": [
                {
                  "protocol": "TCP",
                  "port": 5050
                }
              ],
              "volumeMounts": [
                {
                  "name": "filesharevolume",
                  "mountPath": "/mnt/acishare/projects"
                }
              ],
              "environmentVariables": [
                {
                  "name": "CHECK_RESULTS_EVERY_SECONDS",
                  "value": 1
                },
                {
                  "name": "KEEP_HISTORY",
                  "value": 1
                },
                {
                  "name": "KEEP_HISTORY_LATEST",
                  "value": 25
                }
              ],
              "resources": {
                "requests": {
                  "memoryInGB": 1,
                  "cpu": 1
                }
              }
            }
          }
        ],
        "initContainers": [],
        "restartPolicy": "OnFailure",
        "osType": "Linux",
        "ipAddress": {
          "ports": [
            {
              "protocol": "TCP",
              "port": 5050
            }
          ],
          "type": "Public"
        },
        "volumes": [
          {
            "name": "filesharevolume",
            "azureFile": {
              "shareName": "acishare",
              "storageAccountName": "acistoragev1",
              "storageAccountKey": "zzzxxxxxxxxxddddddddddddddd"
            }
          }
        ]
      }
    }
  ]
}

我没有发现您的 ARM 模板有任何问题,它在我这边运行良好。当你在容器上映射 Azure 文件共享时,你可以看到该路径中的文件。但需要注意路径必须是新路径,否则映射前该路径下不存在任何文件。 Azure 文件共享会隐藏之前存在的文件。 Here 是将 Azure 文件共享映射到 ACI 的示例。

好吧,在用Azure容器和Fileshare调试了很多之后,我终于得到了答案。 “mountPath”基本上是您要映射回 Azure 文件共享目录的容器卷路径。但路径不需要存在于文件共享目录中。只是根名称 /acishare 应该与您的文件共享目录匹配。 在我上面的例子中是 /acishare/projects。修复此问题后,我可以看到卷正确地将文件复制到 /acishare/projects 目录,我可以重新启动容器或重新创建容器,文件将保留并重新同步回容器。