docker - 无法读取 dockerfile - .NET 5.0
问题描述
我是 Docker 新手,这个问题让我很困惑。没有一个在线解决方案对我有用,所以任何帮助都将不胜感激。
因此,我正在尝试为也引用类库项目的 .NET 5.0 Web 应用程序构建 docker 映像。这适用于 Windows 机器上的 Linux 容器,并且 Docker Desktop 已设置为“Linux 容器”。
这是我的目录结构-
我在这里有我的解决方案文件:
D:\Repo\HostServer-v2\HostServer\HostServer.sln
主 Web 应用程序项目位于此处(也包含 Dockerfile):
D:\Repo\HostServer-v2\HostServer\HostServer\HostServer.csproj
类库项目位于此处:
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>
我知道这与 Dockerfile 有关。
请帮忙。
解决方案
问题已显示在错误“HostServer: is a directory”中。它需要一个文件,而不是一个目录。你可以参考这个
docker build -f HostServer\Dockerfile -t hostserver .
请尝试通过显式提供目录中的 Dockerfile 名称来运行命令,D:\Repo\HostServer-v2\HostServer
就像您所做的那样。
推荐阅读
- apache - 为什么 Apache 忽略我的 VirtualHost 声明?
- reactjs - 我可以在应用程序被杀死后每 10 秒获取当前位置或在本机反应中获得背景吗
- javascript - Discord 机器人未运行
- java - 为什么 Spring UriComponentsBuilder 会抛出 java.lang.IllegalArgumentException?
- hibernate - 带有示例的 Hibernate 5.x 参考文档
- r - 使用 lapply 或 apply 或 mapply 函数动态合并数据框的列名和值
- javascript - 检查 API 调用查询参数是否有 !== 空值
- flutter - Flutter 在自定义对话框之间导航和发送数据
- android - Navigation Jetpack 上的深层链接
- javascript - 当 processData 为 true 时,像 jQuery 在 Ajax 请求中一样处理 JS Fetch Api 请求的输入数据