отладка не работает для docker compose с visual studio - PullRequest
0 голосов
/ 30 марта 2020

У меня есть. net core 2.1 api за nginx обратным прокси, который я настроил с помощью docker compose в visual studio. При запуске API доступен (у меня есть контроллер проверки работоспособности, который я могу вызвать для проверки), но я не могу отладить. Похоже, что мое решение не работает после сборки. Но мои контейнеры доступны и доступны. Я использую Visual Studio 2019.

Это структура моей папки:

  • ...
  • RestApi (папка папки проекта)
  • Dockerfile
  • docker -compose.yml
  • ReverseProxy (папка)
    • Dockerfile
    • nginx .conf
  • ...

это файлы (сверху вниз в структуре папок):

Dockerfile (для 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 (обратный прокси):

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;
        }
    }
}

При работе docker -создать через visual studio контейнеры docker созданы правильно, но я не могу отладить, и экран браузера не запускается. Я не получаю ошибок при сборке или запуске. Если вам нужна дополнительная информация, пожалуйста, спросите.

1 Ответ

0 голосов
/ 30 марта 2020

Я узнал, что происходит не так. Ответ - решение вопроса, отправленного здесь. https://developercommunity.visualstudio.com/content/problem/552563/debugger-silently-fails-to-attach-to-docker-compos.html

Обычно, когда файл docker не находится рядом с (рядом с) соответствующим файлом csproj (файлом проекта), Visual Studio не присоединяет отладчик. Это сделано специально, потому что могут быть контейнеры, которые вы хотите запустить, но не хотите отлаживать (обратный прокси-сервер, mysql база данных и т. Д. c ..). Поэтому, когда я переместил свой Dockerfile для API внутри папки restapi (в той же папке, что и файл csproj) и настроил мой docker -compose.yml, чтобы искать dockerfile внутри этой папки, отладка работала в Visual Studio.

...