我在Docker容器上的源代码在哪里

时间:2019-01-02 02:00:50

标签: c# .net docker asp.net-web-api

我使用以下docker脚本在.net 4.6.1框架上构建和运行我的ASP.NET Web API项目。

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/. ./

第一步,我将app文件夹设置为我的工作目录。但是创建容器后,我的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

码头工人将源代码保存在哪里?

1 个答案:

答案 0 :(得分:3)

您将在c:\inetpub\wwwroot中找到文件。

请注意,您的Dockerfile有两条FROM行:

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

这正在使用一种称为multi-stage builds的相对较新的Docker功能。基本上,只有第二(也是最后一个)阶段的指令才能确定要复制到实际图像中的内容:

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

请注意,--from=build引用了第一阶段的输出-将其视为临时图像。 /inetpub/wwwroot是第二阶段的WORKDIR,因此您可以在最后的COPY步骤中找到文件。