无法读取 dockerfile - .NET 5.0
Failed to read dockerfile - .NET 5.0
我是 Docker 的新手,这个问题让我完全难住了。 None 的在线解决方案对我有用,如有任何帮助,我们将不胜感激。
所以我正在尝试为 .NET 5.0 Web 应用程序构建一个 docker 图像,该应用程序还引用了一个 class 库项目。这是针对 Windows 机器上的 Linux 容器,并且 Docker 桌面已设置为 'Linux containers'。
这是我的目录结构-
我的解决方案文件在这里:
D:\Repo\HostServer-v2\HostServer\HostServer.sln
主要的 Web 应用程序项目位于此处(还包含 Docker 文件):
D:\Repo\HostServer-v2\HostServer\HostServer\HostServer.csproj
class 库项目位于此处:
D:\Repo\HostServer-v2\HostServer\QuicktronWrapper.csproj
Visual studio 在 D:\Repo\HostServer-v2\HostServer\HostServer\
中创建了以下 Docker 文件
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["HostServer/HostServer.csproj", "HostServer/"]
COPY ["QuicktronWrapper/QuicktronWrapper.csproj", "QuicktronWrapper/"]
RUN dotnet restore "HostServer/HostServer.csproj"
COPY . .
WORKDIR "/src/HostServer"
RUN dotnet build "HostServer.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "HostServer.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "HostServer.dll"]
这里创建了一个 .dockerignore:
D:\Repo\HostServer-v2\HostServer
我知道所有项目都应该在 Docker 的同一个构建上下文中,所以我 运行 来自 D 的以下命令:\Repo\HostServer-v2\HostServer
docker build -f D:\Repo\HostServer-v2\HostServer\HostServer -t hostserver .
但我收到以下错误:
[+] Building 0.0s (2/2) FINISHED
=> [internal] load build definition from HostServer 0.0s
=> => transferring dockerfile: 20.52kB 0.0s
=> CANCELED [internal] load .dockerignore 0.0s
=> => transferring context: 0.0s
failed to solve with frontend dockerfile.v0: failed to read dockerfile: read /var/lib/docker/tmp/buildkit-mount468265171/HostServer: is a directory
PS D:\Repo\HostServer-v2\HostServer>
我知道它与 Docker 文件有关。
请帮忙
错误“HostServer: is a directory”中显示了问题。它需要一个文件,而不是一个目录。可以参考this
请尝试 运行 通过从目录 D:\Repo\HostServer-v2\HostServer
中显式提供 Dockerfile 名称 docker build -f HostServer\Dockerfile -t hostserver .
来执行命令。
我是 Docker 的新手,这个问题让我完全难住了。 None 的在线解决方案对我有用,如有任何帮助,我们将不胜感激。
所以我正在尝试为 .NET 5.0 Web 应用程序构建一个 docker 图像,该应用程序还引用了一个 class 库项目。这是针对 Windows 机器上的 Linux 容器,并且 Docker 桌面已设置为 'Linux containers'。
这是我的目录结构-
我的解决方案文件在这里:
D:\Repo\HostServer-v2\HostServer\HostServer.sln
主要的 Web 应用程序项目位于此处(还包含 Docker 文件):
D:\Repo\HostServer-v2\HostServer\HostServer\HostServer.csproj
class 库项目位于此处:
D:\Repo\HostServer-v2\HostServer\QuicktronWrapper.csproj
Visual studio 在 D:\Repo\HostServer-v2\HostServer\HostServer\
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["HostServer/HostServer.csproj", "HostServer/"]
COPY ["QuicktronWrapper/QuicktronWrapper.csproj", "QuicktronWrapper/"]
RUN dotnet restore "HostServer/HostServer.csproj"
COPY . .
WORKDIR "/src/HostServer"
RUN dotnet build "HostServer.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "HostServer.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "HostServer.dll"]
这里创建了一个 .dockerignore:
D:\Repo\HostServer-v2\HostServer
我知道所有项目都应该在 Docker 的同一个构建上下文中,所以我 运行 来自 D 的以下命令:\Repo\HostServer-v2\HostServer
docker build -f D:\Repo\HostServer-v2\HostServer\HostServer -t hostserver .
但我收到以下错误:
[+] Building 0.0s (2/2) FINISHED
=> [internal] load build definition from HostServer 0.0s
=> => transferring dockerfile: 20.52kB 0.0s
=> CANCELED [internal] load .dockerignore 0.0s
=> => transferring context: 0.0s
failed to solve with frontend dockerfile.v0: failed to read dockerfile: read /var/lib/docker/tmp/buildkit-mount468265171/HostServer: is a directory
PS D:\Repo\HostServer-v2\HostServer>
我知道它与 Docker 文件有关。
请帮忙
错误“HostServer: is a directory”中显示了问题。它需要一个文件,而不是一个目录。可以参考this
请尝试 运行 通过从目录 D:\Repo\HostServer-v2\HostServer
中显式提供 Dockerfile 名称 docker build -f HostServer\Dockerfile -t hostserver .
来执行命令。