我在尝试为 Azure 云中的容器应用设置持久文件存储时遇到了一个问题。我遵循了本教程:https://learn.microsoft.com/en-us/azure/container-apps/storage-mounts-azure-files?tabs=bash
我的问题出现在“创建存储挂载”第 9 点:我更新了 app.yaml,然后运行命令来创建新的修订版本。它在终端中成功了,但在 Azure 页面的修订列表中,新修订版本无法启动。它的执行状态为“故障”,但没有提供任何有关失败的详细信息。只有在系统日志中,我才收到一条错误消息,没有错误代码,只是说存储挂载失败了——没有给出原因。
这是我编辑的 app.yml 的部分:
...
template:
containers:
- image: nginx
name: trendy-app
resources:
cpu: 0.5
ephemeralStorage: 2Gi
memory: 1Gi
volumeMounts:
- volumeName: trendy-file-volume
mountPath: /var/log/nginx
initContainers: null
revisionSuffix: ''
scale:
maxReplicas: 1
minReplicas: 1
rules: null
serviceBinds: null
terminationGracePeriodSeconds: null
volumes:
- name: trendy-file-volume
storageName: trendystoragemount
storageType: AzureFile
- name: trendy-app
storageType: EmptyDir
workloadProfileName: Consumption
...
当我删除 volumeMounts 的配置行时,容器按预期启动 - 只是显然没有挂载的存储。当我添加它但使用不存在的名称时,命令az containerapp update
会失败并出现有意义的错误,即挂载不存在。使用配置,命令运行,但容器启动失败。所以是的,存储卷的配置有问题,但我不知道如何找出问题所在。
我检查了名称并尝试重新运行教程中的命令,但没有发现我的错误。此时我陷入困境,需要帮助来调试它。
谢谢你,Dahie
答案1
我认为您的 app.yml 不正确,请检查日志,但它应该看起来像这样(例如)。
name: nginx-azure-app
location: eastus
resourceGroup: myResourceGroup
containerName: nginx-container
cpu: 0.5
memory: 0.5Gi
instanceCount: 1
services:
- name: nginx-service
image: nginx
ports:
- protocol: TCP
port: 80
volumeMounts:
- name: nginx-volume
mountPath: /usr/share/nginx/html
- name: nginx-logs
mountPath: /var/log/nginx
volumes:
- name: nginx-volume
storageName: mystorageshare
storageType: AzureFile
shareName: myshare
readOnly: false
secretName: mystoragesecret
secretMountPath: /mnt/azure
- name: nginx-logs
storageName: mystorageshare
storageType: AzureFile
shareName: myshare
readOnly: false
secretName: mystoragesecret
secretMountPath: /mnt/azure-logs
secrets:
- name: mystoragesecret
storageAccount: mystorageaccount
shareName: myshare
accessKey: mystorageaccesskey