我有一个多层项目和一个第三方 DLL 文件,我想对它们进行 dockerize。我在我的 webApi 项目中添加了一个 dockerfile 并尝试构建它,但发生了这个错误:
3>第 7/22 步:复制 ["D:/MultiLayeredProject/output/MultiLayeredProject/PluginProject.dll", "MultiLayeredProject/"] 3>复制失败:stat /var/lib/docker/tmp/docker-builder959745697/D: /MultiLayeredProject/output/MultiLayeredProject/PluginProject.dll:没有这样的文件或目录 3>C:\Users~~\source\repos\MultiLayeredProject\MultiLayeredProject\Dockerfile:错误 CTC1014:Docker 命令失败,退出代码为 1。3>C: \Users~~\source\repos\MultiLayeredProject\MultiLayeredProject\Dockerfile : error CTC1014: COPY failed: stat /var/lib/docker/tmp/docker-builder959745697/D:/MultiLayeredProject/output/MultiLayeredProject/PluginProject.dll: no such文件或目录
如何将外部 DLL 添加到 dockerfile?我的 dockerfile 如下所示:
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["D:/MultiLayeredProject/output/MultiLayeredProject/PluginProject.dll", "MultiLayeredProject/"]
COPY ["MultiLayeredProject/MultiLayeredProject.csproj", "MultiLayeredProject/"]
COPY ["AppService/AppService.csproj", "AppService/"]
COPY ["Core/Core.csproj", "Core/"]
RUN dotnet restore "MultiLayeredProject/MultiLayeredProject.csproj"`
COPY . .
WORKDIR "/src/MultiLayeredProject"
RUN dotnet build "MultiLayeredProject.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MultiLayeredProject.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MultiLayeredProject.dll"]
据我了解,您的第三方 dll 是项目文件夹的一部分。因此,不要使用文件的绝对路径,而是尝试使用相对路径,例如:
COPY ["output/MultiLayeredProject/PluginProject.dll", "MultiLayeredProject/"]
当您调用 时docker build
,docker cli 将您的项目结构(上下文)发送到 docker daemon(在 Linux 操作系统内部)并且没有D:/...
路径。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句