Jeer
@Jeer
уверенный пользователь

Туториалы что-то не помогают, как правильно работать с докером для .net core?

Привет, котаны.
Начал изучать докер, но никак не получается структурировать информацию помогите
Вот у меня есть приложение, которое состоит из бекенда, это .net core api, плюс в решении находятся два проекта с тестами (юнит и интеграционные). Я могу запускать свое апи локально и дебажить при необходимости, но если я упакую свое приложение в докер, то я же не смогу его отлажить (либо там какие-то приседания нужны, о которых в туториалах для чайников не рассказывают).
То есть, разрабатывать намного удобнее без докера, даже если я разрабатываю на винде, а потом при публикации на линукс уже можно собирать докер образ, окей. В этом моменте я правильно понимаю, или все же себе люди настраивают и отладку в докере как-то?

Так же при сборке образа в туториалах копируют вообще все файлы из решения (за исключением папок bin и obj) и дальше там делают все тот же dotnet publish, но напоминаю, у меня в решении содержатся проекты с тестами, например, да и вообще, последовательность действий получается такая:
мы создаем пустой контейнер,
устанавлиаваем туда .net core SDK,
копируем файлы исходного кода
билдим (с установкой нугет пакетов, разумеется)
потом делаем dotnet publish с флагом релиз в какую-то папку, эта команда по сути сделает сборку, которую можно использовать где-то на сервере (в нее не войдут либы тестов, насколько я понимаю)
Но это еще не всё, чтобы наша сборка запустилась, мы еще ставим .net core runtime, натравливаем его на эту папку, ну и прокидываем какой-то порт, разумеется

Тут у меня непонимание, что по итогу внутри контейнера остается весь исходный код, включая проекты тестов, остается .net SDK, который нужен был для билда, и это уже под 200 лишних метров, наверно. Тут все просто ленятся вычищать ненужное или что?
Правильно ли я понимаю, что, допустим, если мы используем git hub actions, нам дают чистую виртуалку, мы на нее ставим SDK нужной версии, билдим проект, над этим проектом запускаем тесты, если всё хорошо, тогда делаем dotnet publish и только после этого создаем пустой докер контейнер, ставим на него только runtime нужной версии, копируем только те файы, которые нам сделал publish и это будет минимальный образ, который и нужно будет ставить на сервер (ну вначале точнее его куда-то просто загружать, типа в докер хаб)
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
@q2digger
никого не трогаю, починяю примус
половину этого текста можно выбросить если открыть официальный мануал от Microsoft и почитать как надо работать с их контейнерами
Вот их контейнеры. с установленным дотнетом и всем чем надо https://hub.docker.com/_/microsoft-dotnet
Вот официальная дока https://learn.microsoft.com/en-us/dotnet/core/dock...

Просто билдите свое приложение, закидываете его в этот контейнер и стартуете его.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы