Как я могу скопировать DLL-файл в образ docker?

#c# #docker #.net-core #dockerfile

#c# #docker #.net-ядро #dockerfile

Вопрос:

У меня большая проблема: я должен скопировать файл .dll в свой образ Docker. Я не могу извлечь его из NuGet, потому что это частный пакет, и вы не можете извлечь его обычным способом через URL и nuget.config. Я спросил своих коллег, и они сказали, что я должен скопировать файл в образ Docker. У кого-нибудь есть идея, как это сделать?

Я скопировал это .файл 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 .

Комментарии:

1. Вы можете добавить ссылку на эту dll в csproj file и set CopyAlways . Затем он будет скопирован в выходной каталог во время сборки

2. Спасибо! Где я могу отредактировать файл .csproj и что мне нужно добавить, извините, я новичок в C # и Docker.

3. Включая связанные файлы из-за пределов каталога проекта в ASP.NET Ядро один из первых результатов в Google

4. хорошо, я включил его, но как я могу указать CopyAlways

5. Может быть, есть идея сначала создать обычный проект, а затем позже упаковать его в Docker?

Ответ №1:

COPY Команда — это то, что делает это. Его первый параметр — это источник относительно Dockerfile , а второй — пункт назначения относительно текущего WORKDIR . Вы можете использовать его для копирования целых папок или отдельных файлов. Однако во время выполнения сборки вы пробовали просто импортировать DLL в свой проект Visual Studio, выбрав свойства, а затем скопировать файл в качестве действия сборки. Таким образом, библиотека DLL будет автоматически перемещена в ваш каталог сборки?

Комментарии:

1. Я попробовал это, но проблема была еще сложнее, я скопировал файл dotnet restore, все еще пытался переустановить этот пакет.

2. Или мне нужно скопировать файл в определенный каталог?

3. Вы упомянули, что пакет недоступен в ленте nuget, почему восстановление пытается его переустановить?

4. Понятия не имею.