Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

500
Views
la depuración no funciona para docker compose con visual studio

Tengo una API .net core 2.1 detrás de un proxy inverso nginx que configuré usando docker compose en visual studio. Cuando se ejecuta, se puede acceder a la API (tengo un controlador de verificación de estado al que puedo llamar para verificar) pero no puedo depurar. Parece que mi solución no se está ejecutando después de la construcción. Pero mis contenedores están activos y accesibles. Estoy usando visual studio 2019.

Esta es mi estructura de carpetas:

  • ...
  • RestApi (carpeta de la carpeta del proyecto)
  • Dockerfile
  • docker-compose.yml
  • ReverseProxy (carpeta)
    • Dockerfile
    • nginx.conf
  • ...

estos son los archivos (de arriba a abajo en la estructura de carpetas):

Dockerfile (para la API):

 #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. FROM mcr.microsoft.com/dotnet/core/aspnet:2.1-stretch-slim AS base WORKDIR /app #EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:2.1-stretch AS build WORKDIR /src COPY ["RestApi/RestApi.csproj", "RestApi/"] COPY ["Services/Services.csproj", "Services/"] COPY ["DataServices/DataServices.csproj", "DataServices/"] COPY ["Entities/Entities.csproj", "Entities/"] RUN dotnet restore "RestApi/RestApi.csproj" COPY . . WORKDIR "/src/RestApi" RUN dotnet build "RestApi.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "RestApi.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENV ASPNETCORE_URLS http://+:5000 EXPOSE 5000 ENTRYPOINT ["dotnet", "RestApi.dll"]

docker-compose.yml:

 version: '2.1' services: restapi: build: context: ./ dockerfile: Dockerfile expose: - "5000" #restart: always reverseproxy: build: context: ./ReverseProxy dockerfile: Dockerfile ports: - "80:80" #restart: always links : - restapi

Dockerfile (proxy inverso):

 FROM nginx COPY nginx.conf /etc/nginx/nginx.conf

nginx.conf:

 worker_processes 4; events { worker_connections 1024; } http { sendfile on; upstream app_servers { server RestApi:5000; #server 172.17.0.1:5000; } server { listen 80; location / { proxy_pass http://app_servers; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; } } }

Cuando se ejecuta docker-compose a través de Visual Studio, los contenedores de la ventana acoplable se crean correctamente, pero no puedo depurar y no se inicia ninguna pantalla del navegador. No recibo errores mientras construyo o ejecuto. Si necesita información adicional por favor pregunte.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Descubrí lo que estaba yendo mal. La respuesta es la solución a la pregunta publicada aquí. https://developercommunity.visualstudio.com/content/problem/552563/debugger-silently-fails-to-attach-to-docker-compos.html

Básicamente, cuando un dockerfile NO está junto a (junto a) el archivo csproj correspondiente (archivo de proyecto), Visual Studio no adjuntará el depurador. Esto es por diseño porque puede haber contenedores que desee iniciar pero que no desee depurar (proxy inverso, base de datos mysql, etc.). Entonces, cuando moví mi Dockerfile para la API dentro de la carpeta restapi (la misma carpeta que el archivo csproj) y ajusté mi docker-compose.yml para buscar un archivo docker dentro de esa carpeta, la depuración funcionó en Visual Studio.

over 4 years ago · Santiago Trujillo Report

0

Edit2: se lanzó el parche para Visual Studio (16.11.6+). Puede docker-compose enable-v2 ahora. Esta respuesta ahora está obsoleta.


Para los usuarios de Google aleatorios, hay un nuevo problema (octubre/noviembre de 2021) en docker-compose que rompió la depuración de Visual Studio 2019 (pero no la vista previa de VS2022) con casi los mismos síntomas que en esta pregunta.

La cuestión es que docker-compose config devolverá la ruta relativa a Build.Context y Build.Dockerfile (debe devolver la ruta absoluta en Build.Context y relativa en Build.Dockerfile )

La solución en este momento es docker-compose disable-v2 y Clean & Rebuild su solución hasta que se lance un nuevo parche de docker-compose o visual studio.

Para obtener más información, consulte https://github.com/microsoft/DockerTools/issues/311 y https://github.com/docker/compose/issues/8760

Editar:

La próxima actualización de VS es el 9 de noviembre [2021]. Tendrá la solución.

over 4 years ago · Santiago Trujillo Report

0

No estoy agregando esto como una solución a este problema, pero puede ayudar a otras personas.

Mi problema era, en resumen, un espacio en el nombre de mi solución.

Tengo una gran solución que se inició originalmente en VS Windows. Mi única suposición es que en Windows se le permite tener un espacio en el nombre del archivo de la solución. Así que el mío era como "Mi App.sln". No tuve problemas para ejecutar todo en VS Mac hasta que agregué compatibilidad con Docker para un proyecto.

La depuración de mi proyecto docker-compose haría todo como se esperaba, excepto iniciar la aplicación y adjuntar el depurador. Iniciaría bien el contenedor y se ejecutaría en el escritorio de la ventana acoplable. Si ejecutaba el punto de entrada manualmente en mi carpeta /app/bin, podía iniciar la aplicación y funcionaba. Entonces, dado que no había información de error, era difícil de diagnosticar.

Finalmente me molesté y solo traté de archivar un nuevo proyecto y agregué soporte para docker. Funcionó y se depuró bien. Luego probé con un espacio en el nombre de la solución y VS Mac dijo el carácter ilegal "de ninguna manera amigo" en el nombre. Entonces, me indicó que arreglara mi proyecto real.

Hubiera sido muy agradable si en algún lugar de las herramientas arrojara al menos una advertencia para un espacio (o cualquier carácter ilegal) que esté en la ruta o el nombre de archivo que impida que Docker funcione. Literalmente perdí más de 15 horas tratando de resolver esto.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!