VisualStudio生成的Dockerfile路径
我正在使用Jason Taylor的,我想知道为什么他的WebUI Dockerfile是由Visual Studio生成的,如下所示 它将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的目录,并将目录更改为该目录。在转换成它之后,它会将文
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"]