VisualStudio生成的Dockerfile路径

VisualStudio生成的Dockerfile路径,dockerfile,clean-architecture,asp.net-core-5.0,Dockerfile,Clean Architecture,Asp.net Core 5.0,我正在使用Jason Taylor的,我想知道为什么他的WebUI Dockerfile是由Visual Studio生成的,如下所示 它将WORKDIR设置为/src,然后从/src/ProjectDir/project.csproj复制每个项目。在这种情况下,WORKDIR有什么意义?查看WORKDIR”/src/src/WebUI“。为什么/src/src?只有一个src目录 我怀疑这是因为WORKDIR/src将创建一个名为/src的目录,并将目录更改为该目录。在转换成它之后,它会将文

我正在使用Jason Taylor的,我想知道为什么他的WebUI Dockerfile是由Visual Studio生成的,如下所示

它将
WORKDIR
设置为
/src
,然后从
/src/ProjectDir/project.csproj
复制每个项目。在这种情况下,WORKDIR有什么意义?查看
WORKDIR”/src/src/WebUI“
。为什么
/src/src
?只有一个src目录


我怀疑这是因为
WORKDIR/src
将创建一个名为/src的目录,并将目录更改为该目录。在转换成它之后,它会将文件从主机的相对src文件夹复制到另一个名为src的子目录(在容器上)。因此,完整的绝对路径变为/src/src。您可以通过在
WORKDIR
之前和第一次
COPY
之后添加
RUN pwd&&ls
来确认这一点

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
ENV ASPNETCORE_URLS=https://+:5001;http://+:5000
WORKDIR /app
EXPOSE 5000
EXPOSE 5001

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
RUN apt install -y nodejs
RUN pwd && ls /
WORKDIR /src
COPY ["src/WebUI/WebUI.csproj", "src/WebUI/"]
RUN pwd && ls
COPY ["src/Application/Application.csproj", "src/Application/"]
COPY ["src/Domain/Domain.csproj", "src/Domain/"]
COPY ["src/Infrastructure/Infrastructure.csproj", "src/Infrastructure/"]
RUN dotnet restore "src/WebUI/WebUI.csproj"
COPY . .
WORKDIR "/src/src/WebUI"
RUN dotnet build "WebUI.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebUI.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "CleanArchitecture.WebUI.dll"]

谢谢你的解释!
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
ENV ASPNETCORE_URLS=https://+:5001;http://+:5000
WORKDIR /app
EXPOSE 5000
EXPOSE 5001

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
RUN apt install -y nodejs
RUN pwd && ls /
WORKDIR /src
COPY ["src/WebUI/WebUI.csproj", "src/WebUI/"]
RUN pwd && ls
COPY ["src/Application/Application.csproj", "src/Application/"]
COPY ["src/Domain/Domain.csproj", "src/Domain/"]
COPY ["src/Infrastructure/Infrastructure.csproj", "src/Infrastructure/"]
RUN dotnet restore "src/WebUI/WebUI.csproj"
COPY . .
WORKDIR "/src/src/WebUI"
RUN dotnet build "WebUI.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebUI.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "CleanArchitecture.WebUI.dll"]