2017-12-27 25 views
2

Wenn ich eine Docker-Datei mit mehreren Stufen (wie Basis und Build) habe, gibt es eine Möglichkeit, den Docker-Befehl zu ändern, die Visual Studio beim Debuggen des Containers verwendet - Es scheint den ersten Build in der Docker-Datei zu verwenden, ohne die nachfolgenden Schritte aufzurufen.Visual Studio 2017 Docker - Ändern Sie das Ziel für Multi-Stage-Builds

Hier ist meine Docker-Datei:

FROM microsoft/aspnetcore:2.0.3 AS base 
WORKDIR /app 
EXPOSE 80 

FROM microsoft/aspnetcore-build:2.0.3 AS build 
WORKDIR /src 
COPY *.sln ./ 
COPY Web/Web.csproj Web/ 
RUN dotnet restore 
COPY . . 
WORKDIR /src/Web 
RUN dotnet build -c Release -o /app 

FROM build AS publish 
#RUN npm install 
RUN dotnet publish -c Release -o /app 

FROM base AS final 
WORKDIR /app 
COPY --from=publish /app . 
# Set the entry point of the application. 
ENTRYPOINT ["dotnet", "Web.dll"] 

Als ich f5 getroffen, wird es den Behälter mit dem Basis-Image erstellen und anschließend zu Fehlern führen, weil das Projekt der Knoten installieren des aspnetcore-build Bild benötigt ; Ich kann dies beheben, indem ich das Basis-Image als aspnetcore-build ändere.

Gibt es jedoch eine Möglichkeit, dem Projekt im Visual Studio zu sagen, dass es sich um einen mehrstufigen Build handelt und Build verwendet werden muss?

Ich bin sehr neu in Docker so vielleicht fehlt mir etwas offensichtlich.

+0

Ich habe gerade genau das gleiche Problem. Haben Sie eine Lösung gefunden? –

Antwort

0

Wenn Sie ein mehrstufiges Dockerfile auf VS 2017 verwenden, können Sie es im Debug- und Release-Modus ausführen.

Im DEBUG-Modus legt VS den Docker-Build mit dem "Basis" -Ziel und dem Tag "DEV" fest, sodass Docker ein leeres Bild erstellt, wie Sie bereits gezeigt haben.

Dann startet VS einen Container Ihres Images, so dass sobald es ausgeführt wird, wird der Code im WORKDIR innerhalb des Containers veröffentlicht, die Anwendung gestartet und an debug angehängt.

UPDATE

Lather in dieser Woche, fand ich heraus, dass VS eine Docker-compose Datei auf dem Obj \ Docker Ordner erzeugen, besteht darin, dass für den Build in DEV-Modus verantwortlich.

0

gab ich auf und verändert das Basisbild von aspnetcore zu bauende aspnetcore, etwa so:

FROM microsoft/aspnetcore-build:2.0 AS base 
Verwandte Themen