Docker compose на лазури: определение тома не принимается

при создании докера из многоконтейнерного приложения я получаю сообщение об ошибке определения томов: services.volumes Дополнительное свойство nginx не допускается.

в моем docker-compose.yaml я определил тома, как это предписано докером: https://docs.docker.com/engine/context/aci-integration/#using-azure-file-share-as-volumes-in-aci-containers.

мой докер-compose.yaml:

version: '3.4'
services:
  nginx:
    image: nginx
    container_name: nginx
    restart: always
    volumes:
      - nginxdata/conf.d:/etc/nginx/conf.d
      - nginx/basic_auth:/etc/nginx/basic_auth
    ports:
      - 80:80/tcp
      
volumes:
  nginxdata:
    driver: azure_file
    driver_opts:
      share_name: nginxdata
      storage_account_name: mystorageacct
  nginx:
    driver: azure_file
    driver_opts:
      share_name: nginx
      storage_account_name: mystorageacct

Когда я создаю докер, я получаю сообщение об ошибке: «services.volumes Дополнительное свойство nginxdata не разрешено».

Примечание: лазурные ресурсы существуют, и, например, это работает:

docker --context myaci run --name=nginxvolip -p 80:80 -v mystorageacct/nginx:/usr/share/nginx/html nginx

Я что-то пропустил? Помощь приветствуется!

Есть ли еще обновления по этому вопросу? Это решает вашу проблему?

Charles Xu 11.12.2020 07:21
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
1
1 185
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Давайте посмотрим на пример, который отлично работает:

docker --context myaci run --name=nginxvolip -p 80:80 -v mystorageacct/nginx:/usr/share/nginx/html nginx

Эта команда означает, что вы монтируете файловый ресурс nginx в хранилище mystorageacct по пути /usr/share/nginx/html, и проблем нет. Но в файле docker-compose вы настраиваете монтирование следующим образом:

volumes:
      - nginxdata/conf.d:/etc/nginx/conf.d
      - nginx/basic_auth:/etc/nginx/basic_auth

Кажется, вы хотите подключить папку внутри общей папки к пути внутри контейнера. И в этом проблема. Вы не можете подключить папки внутри общей папки к контейнеру, только те общие папки, которые вы можете подключить. И ошибка также показывает ключевые слова, что Дополнительное свойство не разрешено. Таким образом, доступное крепление должно выглядеть так:

volumes:
      - nginxdata:/etc/nginx/conf.d
      - nginx:/etc/nginx/basic_auth

Извините за мой поздний ответ. Вы правы, можно монтировать только файловые ресурсы. Ошибка дополнительного свойства была связана с неправильным отступом в yaml; определение томов должно быть на том же уровне, что и определение служб, но это не так. После устранения обеих проблем все работает. Спасибо, Чарльз.

hegenious 12.12.2020 08:52

Другие вопросы по теме