Функция Azure запускается в докере, но отладка не работает
Я создаю пример проекта с функциями Azure и Dapr и работаю в Linux Docker. Я использую docker compose и файл yml для запуска проекта. Но проблем немного. Я использую VS 2022 и код VS.
Сначала в VS 2022 он не запустится для проекта Azure Function. Он работает для asp.net Web и API. Для проекта Azure Function будет получена ошибка, так как проект не поддерживает работу в Linux. Затем я открываю в коде VS команду «docker compose up». Проекты запускаются нормально, но на него не удалось прикрепить отладчик.
Я сначала попробовал в VS 2022. Следовал инструкции. Я вижу свой контейнер в списке следующим образом. После прикрепленного контейнера он продолжает выполняться, но не останавливается ни в одной точке останова.
Затем я попробовал в коде VS, в контейнере я смонтировал vsdbg в /remote_debugger Вот мой файл docker-compose.yml
daprfunctester:
image: ${DOCKER_REGISTRY-}daprfunctester
container_name: "daprfunctester"
build:
context: .
dockerfile: DaprFuncTester/Dockerfile
environment:
- DAPR_HTTP_PORT=3500
- AzureWebJobsStorage
- DOTNET_USE_POLLING_FILE_WATCHER
- NUGET_FALLBACK_PACKAGES
- NUGET_PACKAGES
- ASPNETCORE_CONTENTROOT=/azure-functions-host
- FUNCTIONS_WORKER_RUNTIME=dotnet
- DOTNET_RUNNING_IN_CONTAINER=true
- PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
volumes:
- F:\Work\Moneycorp\CodeForFun\DurableForFun:/src
- C:\Users\winso\vsdbg\vs2017u5:/remote_debugger:rw
- C:\Users\winso\AppData\Local\AzureFunctionsTools\Containers_2167102\Releases\4.20.0\linuxCLI:/functions_debugging_cli:ro
- ~/.nuget/packages:/root/.nuget/packages:ro
- C:\Users\winso\.nuget\packages:/root/.nuget/fallbackpackages:ro
networks:
- hello-dapr
И файл launch.json
{
"name": "Docker .NET Core Attach (Preview)",
"type": "docker",
"request": "attach",
"platform": "netCore",
"netCore": {
"debuggerPath": "/remote_debugger/vsdbg",
//"appProject": "${workspaceFolder}/DaprFuncTester/DaprFuncTester.csproj",
//"enableDebugging": true
},
"sourceFileMap": {
"/home/site/wwwroot": "${workspaceFolder}/DaprFuncTester"
},
"processName": "Microsoft.Azure.WebJobs.Script.WebHost"
//"processId":"${command:pickProcess}"
},
Когда я запускаю отладчик F5, он работает, и если я пытаюсь установить точку останова, он также останавливает поток из-за точки останова, но он не взаимодействует с кодом, он не указывает и не имеет указателя на строку кода. Если нажать F10 "перешагнуть", выскочит ошибка "Не удалось выполнить шаг". Я не могу проверить значения переменных. Если я проверю .Net ThreadPool Worker, у него появится сообщение «Ошибка обработки запроса stackTrace».
У меня вопрос: судя по сравнению с кодом, отладчик останавливается в точке останова, почему мой код не взаимодействует? что-то не так с настройками в моих файлах launch.json или docker compose?