且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在没有Visual Studio且没有docker compose的情况下使用docker复制csproj文件?

更新时间:2022-11-03 12:23:39

这是由dockerfile中文件路径的错误根文件夹引起的。

This is caused by the wrong root folder for the file path in dockerfile.

要从 Docker 启动,其根文件夹为 C:\Users\ ... \repos\TryNewDocker2 ,但是从命令运行时,其根目录为 C:\用户-... \repos\TryNewDocker2\TryNewDocker2 ,因此 TryNewDocker2.csproj 的路径已从 TryNewDocker2 / TryNewDocker2.csproj TryNewDocker2.csproj

For launching from Docker, its root folder is C:\Users\...\repos\TryNewDocker2, but while running from command, its root fodler is C:\Users\...\repos\TryNewDocker2\TryNewDocker2, so the path for TryNewDocker2.csproj has changed from TryNewDocker2/TryNewDocker2.csproj to TryNewDocker2.csproj

尝试以下dockerfile:

Try dockerfile below:

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 59162
EXPOSE 44342

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ["TryNewDocker2.csproj", "TryNewDocker2/"]
RUN dotnet restore "TryNewDocker2/TryNewDocker2.csproj"
COPY . ./TryNewDocker2/
WORKDIR "/src/TryNewDocker2"
RUN dotnet build "TryNewDocker2.csproj" -c Release -o /app

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

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

更新

要在Docker和命令中都可以使用,请不要更改dockerfile,请从下面的路径通过指定dockerfile路径运行命令。

For working in both Docker and command, do not change your dockerfile, and from path below to run your command with specifying the dockerfile path.

C:\Users\...\repos\TryNewDocker2>docker build -t gogo -f TryNewDocker2/Dockerfile .