Сборка Docker-образа с копированием всех *.csproj
Доброе время суток.
У меня имеется солюшн со множеством проектов на .net 5, среди них микросервисы и зависимые проекты. Я пытаюсь оптимизировать сборку образов как в гайде, но там показан слишком простой пример.
В моём случае имеется корневая папка солюшена с расположенными в разных подпапках проектами. Мне нужно копировать все *.csproj с сохранением структуры вложенностей, указав некую корневую папку источника.
Вопрос: как при помощи инструкций Dockerfile можно копировать все *.csproj из разных подпапок, сохраняя при этом структуру?
- Вариант
COPY . .работает, но приводит к тому, что тяжелая и долгая операцияdotnet restoreбудет запускаться каждый раз при постройке образа. - Вручную указывать полные пути всех *.csproj для копирования усложнит dockerfile и потенциально приведет к ошибкам и упущениям.
Ответы (1 шт):
Один способ это сделать - использовать кодогенерацию.
То есть создайте шаблон Dockerfile-а и простой скрипт, который по шаблону сгенерирует конечный Dockerfile с нужными командами COPY path/to/proj.csproj path/to/proj.csproj для каждого нужного файла *.csproj в дереве.