Где мой исходный код на Docker-контейнере - PullRequest
0 голосов
/ 02 января 2019

Я использовал следующий сценарий docker для сборки и запуска моего проекта ASP.NET Web API на платформе .net 4.6.1.

FROM microsoft/dotnet-framework:4.7.2-sdk AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY TestWebAPI/*.csproj ./TestWebAPI/
COPY TestWebAPI/*.config ./TestWebAPI/
RUN nuget restore

# copy everything else and build app
COPY TestWebAPI/. ./TestWebAPI/
WORKDIR /app/TestWebAPI
RUN msbuild /p:Configuration=Release


FROM microsoft/aspnet:4.7.2 AS runtime
WORKDIR /inetpub/wwwroot
COPY --from=build /app/TestWebAPI/. ./

На первом шаге я устанавливаю папку приложения в качестве рабочего каталога.Но после создания контейнера я не вижу ни одного приложения с именем папки на моем C:

--To create Image
docker image build --tag testwebapi --file .\Dockerfile .

--To run container
docker container run --detach --publish 80 testwebapi

--To see containers content
docker exec -i -t a1da40af6b3c powershell

enter image description here

Где Docker хранит источниккод

1 Ответ

0 голосов
/ 02 января 2019

Вы найдете ваши файлы в c:\inetpub\wwwroot.

Обратите внимание, что у вашего Dockerfile есть две FROM строки:

FROM microsoft/dotnet-framework:4.7.2-sdk AS build
...
FROM microsoft/aspnet:4.7.2 AS runtime

Это использует относительно новую функцию Dockerназывается многоступенчатая сборка .По сути, только инструкции второго (и последнего) этапа определяют, что копируется в фактическое изображение:

WORKDIR /inetpub/wwwroot
COPY --from=build /app/TestWebAPI/. ./

Обратите внимание, что --from=build ссылается на выходные данные первого этапа - воспринимайте его как временное изображение./inetpub/wwwroot - это WORKDIR второго этапа, так что именно здесь вы найдете файлы с последнего шага COPY.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...