Приложение-контейнер Azure не запускается из-за конфигурации VolumeMount.
У меня возникла проблема: я пытаюсь настроить постоянное хранилище файлов для приложения-контейнера в облаке 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
команда завершается с ошибкой, указывающей на то, что монтирование не существует. При наличии конфигурации команда выполняется, но запуск контейнера завершается неудачно. Так что да, что-то не так в конфиге тома хранилища, но я не знаю, как узнать что.
Я проверил имена и попробовал повторно запустить команды из руководства, но не нашел своей ошибки. На этом этапе я застрял, и мне нужна помощь, как я могу это отладить.
Спасибо, Дахи
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