docker - 如何将第三方 DLL 添加到 DockerFile?C#
问题描述
我有一个多层项目和一个第三方 DLL 文件,我想对它们进行 docker 化。我在我的 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 : 错误 CTC1014: COPY failed: stat /var/lib/docker/tmp/docker-builder959745697/D:/MultiLayeredProject/output/MultiLayeredProject/PluginProject.dll: 没有文件或目录
如何将外部 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 cli 时docker build
,docker cli 会将您的项目结构(上下文)发送到 docker daemon(Linux 操作系统内部)并且没有D:/...
路径。
推荐阅读
- javascript - 如何在 Electron 应用程序的加载时间内防止光标上的沙漏?
- docker - 如何在高山容器中安装 Docker?
- python - 将字符串安全地转换为元组列表中的整数
- python - GloVe中两个词的相似度
- javascript - 未捕获的类型错误:无法设置未定义的属性“转换”
- php - 在 php 中准备一个抽象数据库
- java - 有意义的容器元素示例
- javascript - rxjs 只在第一次执行 tap
- branch.io - Branch 如何构造最终隐藏在 *.app.link url 中的 url?
- python-2.7 - 我正在尝试在我的图像上绘制文字,但它没有出现