c# - 我在 docker 容器上的源代码在哪里

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

在第一步中,我将应用程序文件夹设置为我的工作目录。但是在创建容器后,我在 C: 上看不到任何文件夹名称 app:

--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 将源代码保存在哪里?

最佳答案

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

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

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

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

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

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

关于c# - 我在 docker 容器上的源代码在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54000425/

相关文章:

c# - Windows 窗体应用程序中的多线程调用?

c# - 在 C# 中使单个语句异步的最简单方法?

c# - 是否可以重置 ServicePointManager?

docker - docker-compose,如何共享音量

带有外部参数文件的 Dockerfile

c# - 在 C# 中将字符串设置为图像源

c# - 在 C# 中使用 C++ API

mysql - 通过 Docker 运行 mysql 脚本时出错?

c# - RabbitMQ 传输速率加快?

c# - 无法加载文件或程序集 "Microsoft.VisualStudio.Services.Common, Version=12.0.21005.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"