Сборка в контейнере 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, но сборка в контейнере всегда дает сбой. Это может происходить из-за того, что:
- VS имеет логику повторных попыток для получения пакетов при восстановлении, CL в контейнере Docker может не быть таким же прощающим
- Возможно, не удастся получить доступ к репоизнутри контейнера в связи с тем, как настроена сеть
Мой обходной путь - скопировать соответствующие локально кэшированные пакеты (из C: \ Users \ username.nuget \ packages) в папку пакетов накорень проекта, а затем добавьте эту строку в Dockerfile над командой восстановления:
COPY packages /root/.nuget/packages
Этот обходной путь позволяет команде восстановления успешно завершиться, но существенно замедляет сборку и потенциально приводит кненужные файлы в папке сборки. Есть ли лучшее решение?
Вы можете запустить сервер NuGet в контейнере Docker , но это также накладные расходы, которые, вероятно, не нужны.