Azure ACI 和文件共享 - 已安装卷 linux MSSQL 服务器不可访问

Azure ACI and File Share - Volume mounted linux MSSQL Server is not accessible

我在 Azure 容器实例中使用 mssql server 图像。

无需安装任何卷,ACI 已成功创建并运行良好。但是当我挂载一个卷时,即使在容器重新启动后也要保留数据,由 Azure 存储帐户(文件共享)组成,ACI 已成功创建但无法访问数据库。

logsecrets 文件夹是在文件共享 (acishare) 中创建的,但是 data 未在文件共享中生成。

任何人都可以提供详细的步骤来解决它或创建一个 ACI 文件共享作为 mssql 服务器 docker 映像的卷。

[Azure bash 命令创建 ACI 并安装了 Azure 文件共享卷]

ACI_PERS_RESOURCE_GROUP=PC
ACI_PERS_STORAGE_ACCOUNT_NAME=pcs1
ACI_PERS_LOCATION=eastus
ACI_PERS_SHARE_NAME=acishare
STORAGE_KEY=$(az storage account keys list --resource-group $ACI_PERS_RESOURCE_GROUP --account-name $ACI_PERS_STORAGE_ACCOUNT_NAME --query "[0].value" --output tsv)

az container create \
--resource-group $ACI_PERS_RESOURCE_GROUP \
--name pcs5 \
--image mcr.microsoft.com/mssql/server \
--dns-name-label pcs5 \
--ports 80 443 1433 \
--azure-file-volume-account-name $ACI_PERS_STORAGE_ACCOUNT_NAME \
--azure-file-volume-account-key $STORAGE_KEY \
--azure-file-volume-share-name $ACI_PERS_SHARE_NAME \
--azure-file-volume-mount-path /var/opt/mssql/ \
--memory 2.5 \
--environment-variables 'SA_PASSWORD'='PxSecret123' 'ACCEPT_EULA'='Y' 'MSSQL_PID=Express'

ACI创建成功但无法访问的原因是mssql服务器没有运行正常。当您将 Azure 文件共享装载到容器的路径 /var/opt/mssql 时,文件共享将覆盖其中的所有文件。但是这些文件是 mssql 服务器 运行 所必需的。所以服务器启动失败。

可能的解决方案是将文件共享挂载到不存在或不影响 mssql 服务器 运行ning 的新路径。然后你需要手动将你想要的数据传输到挂载路径。这不是一个好的解决方案。但是现在由于文件共享挂载的限制,没有更好的解决方案。