Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

docker-compose doesn't work from Visual Studio

I have three web projects in one solution, they work together on gRPC. I am trying to bring all three projects up with docker-compose, but the problem is when the command

docker-compose up --build

This is how everything works, but when I try to start using the Visual Studio interface with a debugger connected, it does not work

When you run the application via docker-compose in Visual Studio, then when you start the containers themselves, an error appears with the following content:

Can't find a program for debugging in the container

And then it immediately pops out this:

The target process exited without raising an event fired by CoreCLR. Make sure the target process is configured to use .NET Core. This may be necessary if the target process has not started in .NET Core.

This message appears in the container logs:

Could not execute because the application was not found or a compatible .NET SDK is not installed.
Possible reasons for this include:
  * You intended to execute a .NET program:
      The application '/app/bin/Debug/net5.0/Votinger.Gateway.Web.dll' does not exist.
  * You intended to execute a .NET SDK command:
      It was not possible to find any installed .NET SDKs.
      Install a .NET SDK from:
        https://aka.ms/dotnet-download

This is a Dockerfile which is auto-generated by Visual Studio, it is the same for every project except for the paths to the project

#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/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 5000
EXPOSE 5001

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["Votinger.Gateway/Votinger.Gateway.Web/Votinger.Gateway.Web.csproj", "Votinger.Gateway/Votinger.Gateway.Web/"]
RUN dotnet restore "Votinger.Gateway/Votinger.Gateway.Web/Votinger.Gateway.Web.csproj"
COPY . .
WORKDIR "/src/Votinger.Gateway/Votinger.Gateway.Web"
RUN dotnet build "Votinger.Gateway.Web.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Votinger.Gateway.Web.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
FROM mcr.microsoft.com/dotnet/sdk:5.0
ENTRYPOINT ["dotnet", "Votinger.Gateway.Web.dll"]

docker-compose.yml

version: '3.4'

services:
  votinger.authserver.db:
    image: mysql:8
    container_name: Votinger.AuthServer.Db
    restart: always
    environment:
        MYSQL_ALLOW_EMPTY_PASSWORD: "yes"

  votinger.pollserver.db:
    image: mysql:8
    container_name: Votinger.PollServer.Db
    restart: always
    environment:
        MYSQL_ALLOW_EMPTY_PASSWORD: "yes"

  votinger.authserver.web:
    image: ${DOCKER_REGISTRY-}votingerauthserverweb
    container_name: Votinger.AuthServer.Web
    build:
      context: .
      dockerfile: Votinger.AuthServer/Votinger.AuthServer.Web/Dockerfile
    links:
        - votinger.authserver.db:authdb

  votinger.gateway.web:
    image: ${DOCKER_REGISTRY-}votingergatewayweb
    container_name: Votinger.Gateway.Web
    build:
      context: .
      dockerfile: Votinger.Gateway/Votinger.Gateway.Web/Dockerfile
    ports:
        - 5000:5000
    links:
        - votinger.authserver.web:authserver
        - votinger.pollserver.web:pollserver

  votinger.pollserver.web:
    image: ${DOCKER_REGISTRY-}votingerpollserverweb
    container_name: Votinger.PollServer.Web
    build:
      context: .
      dockerfile: Votinger.PollServer/Votinger.PollServer.Web/Dockerfile
    links:
        - votinger.pollserver.db:polldb

docker-compose.override.yml

version: '3.4'

services:
  votinger.authserver.web:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:5000;http://+:5001
      - ASPNETCORE_Kestrel__Certificates__Default__Password=password
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
    volumes:
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
      - ${APPDATA}/ASP.NET/Https:/https:ro

  votinger.gateway.web:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:5000;http://+:5001
      - ASPNETCORE_Kestrel__Certificates__Default__Password=password
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
    volumes:
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
      - ${APPDATA}/ASP.NET/Https:/https:ro
  votinger.pollserver.web:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:5000;http://+:5001
      - ASPNETCORE_Kestrel__Certificates__Default__Password=password
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
    volumes:
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
      - ${APPDATA}/ASP.NET/Https:/https:ro
      

I will also post a link to GitHub where this project is located

(dev branch) https://github.com/SeanWoo/Votinger

I will forgive your help

like image 477
SeanBaker Avatar asked Nov 14 '25 11:11

SeanBaker


1 Answers

I found a solution, the problem was that in the docker-compose.vs.debug.yml file is generated by Visual Studio, full paths to the project and debugger are indicated there, and my path went through a folder named as C #, and Visual Studio decided to calculate the symbol # unnecessary and deleted it, it turned out to be a path with the C folder, which led to a completely different place

like image 90
SeanBaker Avatar answered Nov 17 '25 10:11

SeanBaker