Пути /ASP.NET/Https и / Microsoft / UserSecrets) не используются на Mac - PullRequest
0 голосов
/ 18 февраля 2019

Ошибка ниже при использовании docker-compose на macOS -

/ Applications / Visual Studio.app/Contents/Resources/lib/monodevelop/AddIns/docker/MonoDevelop.Docker/MSbuild/Sdks/Microsoft.Docker.Sdk / build / Microsoft.VisualStudio.Docker.Compose.targets (5,5): Ошибка: переменная APPDATA не установлена.По умолчанию используется пустая строка.Удаление dockercompose9508177338158005990_xyz_1 Удаление dockercompose9508177338158005990_xyz_1 Строительство хуг Строительство хуг Воссоздание 886c8806b528_dockercompose9508177338158005990_xyz_1 ... Воссоздание 57afcf6f0cb0_dockercompose9508177338158005990_xyz_1 ... Воссоздание 886c8806b528_dockercompose9508177338158005990_xyz_1 ... ошибка ERROR: для 886c8806b528_dockercompose9508177338158005990_xyz_1 Не удается запустить службу хуг: b'Mounts отказано: \ г \ NThe дорожки / Microsoft / UserSecrets и / ASP.NET / Https \ r \ n не доступны из OS X и не известны Docker. \ R \ nВы можете настроить общие пути из Docker -> Настройки ... -> Общий доступ к файлам. \ R \ nПросмотреть https://docs.docker.com/docker-for-mac/osxfs/#namespaces для получения дополнительной информации. \ r \ n. 'Воссоздание 57afcf6f0cb0_dockercompose9508177338158005990_xyz_1 ... ошибка ОШИБКА: для 57afcf6f0cb0_dockercompose9508177338158005990_xyz_1 Невозможно запустить службу.Docker. \ R \ nВы можете настроить общие пути из Docker -> Настройки ... -> Общий доступ к файлам. \ R \ nПросмотреть https://docs.docker.com/docker-for-mac/osxfs/#namespaces для получения дополнительной информации. \ R \ n. 'ОШИБКА: для xyz Невозможно запустить службу xyz: b'Mounts denied: \ r \ nПуть / Microsoft / UserSecrets и /ASP.NET/Https\r\nare не являются общими для OS X и не известны Docker. \ R \ nВыможно настроить общие пути из Docker -> «Настройки» -> «Общий доступ к файлам». \ r \ n См. https://docs.docker.com/docker-for-mac/osxfs/#namespaces для получения дополнительной информации. \ r \ n. 'ОШИБКА: для xyz Невозможно запустить службу xyz: b'Mounts denied: \ r \ nПуть / Microsoft / UserSecrets и /ASP.NET/Https\r\nare не являются общими для OS X и не известны Docker. \ R \ nВыможно настроить общие пути из Docker -> «Настройки» -> «Общий доступ к файлам». \ r \ n См. https://docs.docker.com/docker-for-mac/osxfs/#namespaces для получения дополнительной информации. \ r \ n. 'Обнаружены ошибки при запуске проекта ..

Для получения дополнительной информации по устранению неполадок перейдите по адресу http://aka.ms/DockerToolsTroubleshooting (docker-compose)

1 Ответ

0 голосов
/ 19 апреля 2019

Эта проблема возникает при открытии в Visual Studio для Mac проекта, созданного с использованием Visual Studio для Windows.Поскольку большинство разработчиков в моей команде используют компьютеры под управлением Windows, я хотел найти решение, которое позволило бы мне запустить проект без изменения его конфигурации.Это потребовало много времени и исследований, но я наконец-то заставил его работать:

  1. Проверьте, существует ли папка ~/.aspnet/https.Если это так, перейдите к , шаг 5 .

  2. Создание структуры папок ~./asp.net/https.

  3. Выполните командуниже, чтобы установить сертификаты разработки, которые позволяют вам получить доступ к localhost через HTTPS.Подробнее здесь .

    dotnet dev-certs https --trust
    
  4. Запустите приведенную ниже команду для экспорта сертификата разработки.Запишите пароль, так как он понадобится вам позже:

    dotnet dev-certs https -ep ${HOME}/.aspnet/https/FILE_NAME.pfx -p PASSWORD
    
  5. Проверьте, существует ли папка ~/.microsoft/usersecrets.Если это так, это означает, что вы уже определили некоторые пользовательские секреты, поэтому вы, вероятно, можете перейти к step 7 , в противном случае продолжите ниже.

  6. Получите пользовательские секретыИдентификатор сборки веб-приложения, которое вы создаете.Обычно он находится в файле с именем Your.Project.Package.Name.Assembly.cs.Вы также можете выполнить поиск UserSecrets.UserSecretsIdAttribute(" в папке вашего проекта и взять GUID.

    Возможно, вам придется повторить этот шаг для нескольких сборок в вашем решении, если вы используете Docker Compose для развертывания болееодно веб-приложение одновременно.

  7. Внутри ~./microsoft/usersecrets, создайте папку с GUID, который вы получили на шаге 6, при условии, что оно еще не существует.Если это так, вы можете просто обновить файл secrets.json внутри него с содержанием следующего шага.

  8. Создать файл secrets.json и вставить следующее:

    {
      "Kestrel": {
        "Certificates": {
          "Default": {
            "Path": "/root/.aspnet/https/<FILE_NAME from Step 4>.pfx",
            "Password": "<PASSWORD from Step 4>"
          }
        }
      }
    }
    
  9. Создайте файл с именем .env в той же папке, где находятся файлы конфигурации Docker Compose, внутри решения, со следующим содержимым:

    APPDATA=/Users/YOUR_USER_NAME
    

    Этот файл будетDocker Compose автоматически подхватывает, когда Visual Studio запускает инструмент.

  10. Добавьте файл .env, который вы только что создали, в .gitignore, чтобы он не был зафиксирован с вашими изменениямипо ошибке.Это гарантирует, что другие разработчики с другими средами также смогут использовать этот подход.

  11. Создайте символическую ссылку на точку от ~/ASP.NET до .aspnet следующим образом:

    ln -s ~/.aspnet ~/ASP.NET
    
  12. Создание символической ссылки на точку ~/ASP.NET/Https до ~/.aspnet/https следующим образом:

    ln -s ~/.aspnet/https ~/ASP.NET/Https
    
  13. Создание символической ссылки на точку ~/Microsoft на ~/.microsoft следующим образом:

    ln -s ~/.microsoft ~/Microsoft
    
  14. Создать символическую ссылку на точку ~ / Microsoft / UserSecrets to ~ / .microsoft / usersecrets` следующим образом:

    ln -s ~/.microsoft/usersecrets ~/Microsoft/UserSecrets
    

Если вы правильно выполните все шаги, Docker Compose сможет определить путь Windows в вашей среде Mac, найти требуемый пароль сертификата и правильно запустить решение.

РезультатВам нужно всего лишь зафиксировать свои .gitignore изменения, чтобы убедиться, что ваш .env файл не был включен в репо по ошибке, непреднамеренно затрагивая других - никаких дополнительных изменений в проекте не требуется.

Правка 4 августа 2019 года: НекоторыеПараметры создания mlink были в обратном порядке.Огромное спасибо @ BRBdot за указание на это.

Ссылки:

  1. Размещение основных образов ASP.NET с Docker через HTTPS
  2. Локальная разработка с ASP.NET Core под HTTPS, SSL и самоподписанными сертификатами
  3. Как настроить сертификат dev при использовании Docker в разработке
...