#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 и setCopyAlways
. Затем он будет скопирован в выходной каталог во время сборки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. Понятия не имею.