Восстановление Dotnet из Docker через VPN - PullRequest
0 голосов
/ 03 ноября 2019

Сборка в контейнере Docker завершается неудачно при восстановлении dotnet, возникает ошибка при получении пакетов nuget из частного репозитория

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env ... RUN dotnet restore Retrying 'FindPackagesByIdAsyncCore' for source 'http://privaterepo.somedomain.com/FindPackagesById()?id='somepackagename'&semVerLevel=2.0.0'. Connection refused

В конечном итоге команда восстановления завершается неудачно, когда не может получитьнеобходимые пакеты

Эти пакеты в частном репо должны быть доступны через VPN. Сборка решения прекрасно работает в Visual Studio, но сборка в контейнере всегда дает сбой. Это может происходить из-за того, что:

  1. VS имеет логику повторных попыток для получения пакетов при восстановлении, CL в контейнере Docker может не быть таким же прощающим
  2. Возможно, не удастся получить доступ к репоизнутри контейнера в связи с тем, как настроена сеть

Мой обходной путь - скопировать соответствующие локально кэшированные пакеты (из C: \ Users \ username.nuget \ packages) в папку пакетов накорень проекта, а затем добавьте эту строку в Dockerfile над командой восстановления:

COPY packages /root/.nuget/packages

Этот обходной путь позволяет команде восстановления успешно завершиться, но существенно замедляет сборку и потенциально приводит кненужные файлы в папке сборки. Есть ли лучшее решение?

Вы можете запустить сервер NuGet в контейнере Docker , но это также накладные расходы, которые, вероятно, не нужны.

...