【问题标题】:How can I copy a .dll file into a docker image?如何将 .dll 文件复制到 docker 映像中?
【发布时间】:2020-12-04 09:34:26
【问题描述】:

我有一个大问题: 我必须将 .dll 文件复制到我的 Docker 映像中。我无法从 NuGet 中拉取它,因为它是一个私有包,您无法通过 url 和 nuget.config 正常拉取它。 我问了我的同事,他们说我应该将文件复制到 Docker Image 中。 有人知道怎么做吗?

我已将此 .dll 文件复制到我的正常项目目录中。但我不知道在哪里复制它或如何复制它。

这是我的 DockerFile:


FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["DoKiva/DoKiva.csproj", "DoKiva/"]
RUN dotnet restore "DoKiva/DoKiva.csproj"
COPY . .
WORKDIR "/src/DoKiva"
RUN dotnet build "DoKiva.csproj" -c Release -o /app/build

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

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

如果您能帮助我,我将不胜感激!

我的 Docker 构建命令是 docker build -t dokivac 。

【问题讨论】:

  • 您可以将此dll的链接添加到csproj文件并设置CopyAlways。然后它会在构建过程中被复制到输出目录
  • 谢谢!我在哪里可以编辑 .csproj 以及我必须添加什么对不起我是 C# 和 Docker 的新手。
  • 好的,我包含了它,但我如何指定CopyAlways
  • 先正常构建项目,然后打包到 Docker 中可能是一个想法吗?

标签: c# docker .net-core dockerfile


【解决方案1】:

COPY 命令就是这样做的。它的第一个参数是源,相对于Dockerfile,第二个参数是目标,相对于当前的WORKDIR。您可以使用它来复制整个文件夹或单个文件。但是,在运行构建时,您是否尝试过在 Visual Studio 项目中导入 DLL,选择属性,然后将文件复制为构建操作。这样 DLL 会自动移动到你的 build 目录吗?

【讨论】:

  • 我试过了,但问题很严重我复制了文件 dotnet restore 仍然试图重新安装这个包。
  • 或者我必须将文件复制到特定目录中吗?
  • 您提到该软件包在 nuget 提要中不可用,为什么还原尝试重新安装它?
  • 我不知道。
猜你喜欢
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
  • 2018-09-15
  • 1970-01-01
  • 1970-01-01
  • 2014-12-20
  • 1970-01-01
  • 2015-10-16
相关资源
最近更新 更多