Ich habe ein Projekt eingerichtet, das lokal in Docker mit Docker-Compose ausgeführt werden soll. Bis vor kurzem hat es gut funktioniert. Ich glaube nicht, dass ich etwas geändert habe, das dies beeinflussen könnte (außer vielleicht ein VS-Upgrade?), Und ich habe sogar versucht, auf ein älteres Commit zurückzugreifen. In allen Fällen wird jetzt eine Fehlermeldung angezeigt, die im Ausgabefenster von Visual Studio wie folgt angezeigt wird:
docker exec -i f93fb2962a1e sh -c ""dotnet" --additionalProbingPath /root/.nuget/packages --additionalProbingPath /root/.nuget/fallbackpackages "bin/Debug/netcoreapp3.1/MattsTwitchBot.Web.dll" | tee /dev/console"
sh: 0: getcwd() failed: No such file or directory
It was not possible to find any installed .NET Core SDKs
Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from:
https://aka.ms/dotnet-download
Ich habe verschiedene Dinge ausprobiert (Ändern des Basisabbilds in der Docker-Datei, Löschen alter Bilder und Container usw.), aber es wird immer wieder dieselbe Fehlermeldung angezeigt. Das Seltsame ist, dass Visual Studio beim Ausführen einer Datei-> Neu eine sehr ähnlich aussehende Docker-Datei generiert, die einwandfrei funktioniert. Ich habe keine Ahnung, wo das Problem liegt, aber ich hoffe, dass jemand hier es erkennen kann.
Mein vollständiges Repo ist auf Github verfügbar . Hier ist der Docker für das asp.net-Kernprojekt:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["MattsTwitchBot.Web/MattsTwitchBot.Web.csproj", "MattsTwitchBot.Web/"]
COPY ["MattsTwitchBot.Core/MattsTwitchBot.Core.csproj", "MattsTwitchBot.Core/"]
RUN dotnet restore "MattsTwitchBot.Web/MattsTwitchBot.Web.csproj"
COPY . .
WORKDIR "/src/MattsTwitchBot.Web"
RUN dotnet build "MattsTwitchBot.Web.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MattsTwitchBot.Web.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MattsTwitchBot.Web.dll"]
und das Docker-Compose für die Lösung (auch ohne das Couchbase-Zeug erhalte ich den gleichen Fehler, aber ich füge ihn der Vollständigkeit halber hier ein):
version: '3.4'
services:
couchbase:
image: couchbase:6.5.0-beta2
volumes:
- "./couchbasetwitchbot:/opt/couchbase/var" # couchbase data folder
ports:
- "8091-8096:8091-8096" # https://docs.couchbase.com/server/current/install/install-ports.html
- "11210-11211:11210-11211"
mattstwitchbot.web:
image: ${DOCKER_REGISTRY-}mattstwitchbotweb
build:
context: .
dockerfile: MattsTwitchBot.Web/Dockerfile
environment:
Couchbase__Servers__0: http://couchbase:8091/ # Reference to the "couchbase" service name on line 4
depends_on:
- couchbase # Reference to the "couchbase" service name on line 4
command: ["./wait-for-it.sh", "http://couchbase:8091"]