Azure WebApps + общий файловый ресурс Azure с несколькими контейнерами

Я пытался настроить базу данных Postgresql с помощью своего API. Мой API находится в Azure WebApps, а db — в файловом ресурсе Azure.

Ниже приведен мой файл компоновки докеров.

version: '3.3'

services:
   db:
     image: postgres
     volumes:
       - db_path:/var/lib/postgresql/data
     restart: always
     environment:
        POSTGRES_USER: dbuser
        POSTGRES_PASSWORD: dbuser's_password
        POSTGRES_DB: db_1

   api:
     depends_on:
       - db
     image: <my registry>.azurecr.io/api:latest
     ports:
       - "80:80"
     restart: always

My WebApp -> Конфигурация -> Сопоставления путей ниже введите здесь описание изображения

Он был развернут, но мне не удалось найти файлы базы данных в моем файловом ресурсе Azure. Теперь, когда я повторно развертываю, я вижу следующее в файле Log Stream.

введите здесь описание изображения

Может кто-нибудь показать мне, где я сделал неправильно? Почему моей БД нет в моей общей папке Azure?

заранее спасибо

Изменить:

Наряду с тем, что предложил Чарльз, как показано ниже: введите здесь описание изображения

Я также обновил файл docker-compose.yml, как показано ниже. Изменения, которые я внес, заключаются в том, что я сохранил имя тома таким же, как имя сопоставления, и добавил driver_opts:

version: '3.8'

services:
   db:
     image: mysql
     volumes:
       - mysql:/var/lib/mysql
     environment:
       - MYSQL_DATABASE=dbName
       - MYSQL_ROOT_PASSWORD=MyRootPassword!
       - MYSQL_USER=dbUser_1
       - MYSQL_PASSWORD=dbUser_1'sPassword
     restart: always

   api:
     depends_on:
       - db
     entrypoint: ["./wait_for.sh", "db:3306", "-t", "3600", "--", "execute", "api"] #waiting very long enough to set the db server up and running
     image: <my registry's url>/api:latest
     ports:
       - "80:80"
     restart: always

volumes:
  mysql:
        driver: azure_file
        driver_opts:
          share_name: Azure_Share_Name
          storage_account_name: Azure_Storage_Account_Name
          storageaccountkey: Azure_Key

person Kishan    schedule 21.03.2021    source источник
comment
Есть новости по этому вопросу? Это решает вашу проблему? Если это работает для вас, пожалуйста, примите это.   -  person Charles Xu    schedule 23.03.2021


Ответы (1)


Это известная проблема. При подключении с помощью постоянного тома с файловым ресурсом Azure путь подключения будет иметь владельца и группу root, и вы не сможете изменить его. Таким образом, если приложению требуется путь со специальным пользователем, например, в этой проблеме, Postgresql требуется путь монтирования /var/lib/postgresql/data с владельцем postgres, тогда это невозможно.

Обратите внимание, что на снимке экрана, который вы предоставляете с сопоставлением путей, показан неправильный путь монтирования с конфигурацией в вашем файле YAML. Это может быть ошибка.

person Charles Xu    schedule 22.03.2021
comment
Спасибо Чарльз за ответ, но это не сработало. - person Kishan; 25.03.2021
comment
@Kishan Какая ситуация сейчас? Вы получили другую ошибку или ту же ошибку? Что значит не сработало? Мой ответ показывает причину, по которой вы получили ошибку, и вы не можете ее решить. - person Charles Xu; 25.03.2021
comment
Я все еще на ранней стадии тестирования, но ваше решение сработало, когда я переключил свою базу данных на MSSql Server, но оно не сработало для MySQL и Postgres. - person Kishan; 26.03.2021
comment
@Kishan Все контейнеры в веб-приложении, монтируемые с помощью общего доступа к файлам, работают следующим образом. Итак, если вы сказали, что это не работает для MySQL и Postgres, какую ошибку вы получите? - person Charles Xu; 26.03.2021
comment
@Kishan Есть новости по этому вопросу? Это решает вашу проблему? Если это работает для вас, пожалуйста, примите это. - person Charles Xu; 30.03.2021
comment
Я обновил вопрос, включив в него свои изменения, которые я внес, чтобы заставить его работать. - person Kishan; 30.03.2021
comment
@Kishan Вы имеете в виду entrypoint в docker-compose? - person Charles Xu; 30.03.2021
comment
Я добавил volume и другие параметры, связанные с azure, которые решили мою проблему. - person Kishan; 31.03.2021