Pull to refresh

Comments 20

Простите, а для чего код, который по своей сути текстовая информация, публиковать скриншотами?

Такой код вообще лучше не публиковать. Если уж показываешь код в качестве примеров, то показывай хороший код. А тут все мыслимые шаблоны и практики нарушены. DbContext конфигурируется совершенно непонятным образом. Почему он не передается в контроллер через DI? Почему все вызовы EF синхронные, а не async/await? Я понимаю, что задача была показать сборку образа для докера, но все-таки не стоит показывать это на примере говнокода. И еще - с помощью докерфайлов это делали еще сотню лет назад, если уж хочется написать действительно интересную статью, то можно было бы тогда уж про более новый подход написать.

Здравствуйте. Благодарю за комментарий. Как было написано вначале, я новичок и статья для новичков. Как вы правильно заметили в своем комментарии, задача была в сборке проекта, но никак не в реализации вывода котиков, ведь статья с применением шаблонов или приципов по типу того, что вы упомянули "внедрение зависимостей", заняла бы больше места. Веб апи я взял в качестве примера, а также я могу заменить в статье на пустой шаблон net core и запустить консольное приложение, что не изменит задачу статьи. Но я приму ваше замечание и изменю код для более наглядной картины. Понимаю, что для вас как для специалиста с опытом данная статья не является чем-то новым, но для юных, вроде меня, это может быть хорошей информацией. И в качестве альтернативы вы также можете скинуть и множество других статей на эту же тему или близкой к ней, чтобы вложиться в общее благо. Надеюсь, мы придем к согласию.

Здравствуйте. Благодарю за комментарий. Статью я пишу впервые. К сожалению, не заметил в редакторе, где можно сделать текст меньше, чтобы статья казалось более лаконичной и не приходилось лазить по странице, а также не теряться, объективно судя, в большом коде. Но приму ваше замечание и добавлю код ссылкой на гит хаб. И надеюсь, мы придем к согласию.

Вот только вчера начал изучать asp net и искал туторил, как на Gnu/Linux в докер проект задеплоить и вот он. Как это происходит вообще? Мысли материализуются?

Здравствуйте. Благодарю за комментарий. Заметил такую тенденцию, что выкладывать информацию любят на простые темы, что является проблемой для новичка, а также не описывают частые ошибки, на которые может быть мало информации в интернете. Но к сожалению, на долю малой информации множество людей находятся в поисках. Надеюсь, для новичков эта статья была полезной.

Подскажите, зачем в этом простом примере nginx? И нет, аргумент про производительность тут будет лишний. Зачем хардкодить стороку соединения? Если уж пишете пример докер композа, то нужно писать правильно и передавать конфигурацию приложению извне, тем более что делается это крайне просто. С другой стороны пример излишне усложнили добавлением айпи адресов.

Здравствуйте. Благодарю за комментарий. Аргументы про производительность можно найти в других источниках в довольно больших объеёмах, чего не скажешь про тему написанную в данной статье, по крайней мере, субъективно. Но nginx я выбрал в случае, если будут микросервисы и т.д. , но понимаю, что для данного приложения это является излишним, но также этот пример может являться одним из вариантов разворачивания приложения. На счёт api адресов вы правы, но в статье я упомянул, что можно сделать легче. Я сделал множество выводов на основе вашего комментария и будьте уверены, что это не пройдет мимо и мы придем к согласию.

Тут уже не раз писали (я в том числе), что использовать nginx как reverse proxy / API gateway это в наше время оверхед. Есть более специализированные для этого решения. Например krakend или envoy.

Благодарю за информативный комментарий. К сожалению, я не знаком с такими технологиями, но в случае, если же я ознакомлюсь с данным стеком, то обязательно перепишу статью, если же, конечно, это и вправду повысит производительность, но на данный момент, думаю, новичкам скорее всего хватит этого материала, чтобы просто развернуть проект на linux с подключённой бд и изучать net core(в том числе, если будет микросервисная архитектура). Надеюсь, мы придём к согласию.

Kestrel уже считается довольно взрослым, и ему не нужен nginx впереди.

В данной ситуации nginx тут не нужен. Зачем? Asp net и сам может работать на 80 порту. А если нужно и 443 если добавить сертификаты.

Совершенно не понял, зачем тут nginx. Это же не PHP какой-нибудь. dotnet сам может рабатать как nginx и даже как контроллер Ingress. Если хочется бекенд для микросервисов, подключаем либу ocelot или yarp, и также nginx здесь как третье колено — совершенно избыточная, лишняя и ненужная сущность.

Насчёт файла докер, если используете VS, то там его можно создать одним кликом.(добавить поддержку Docker)

Далее, харкодить при DI строку подключения не нужно, лучше в конфигурацию, как в обычных примерах. Хардкод, как в примере, используется в других случаях когда у нас нет AppHost, но хочется использовать EF.

Насчёт файла докер, если используете VS, то там его можно создать одним кликом.(добавить поддержку Docker)

Ничего хорошего в этом нет, пока у тебя все работает - это конечно весело и задорно, но если что то пойдет не так, как магия внутри сможет тебе помочь?

Из забавного, крупный микросервисный проект в VS 2022 + Docker Desktop собирается за 5 минут, а этот же самый проект с тем же самым docker-compose файлом в CODE + docker-ce собирается за час, при этом полностью утилизирует сетку и сжирает под 100 гб диска.

А приколюха в том, что мелкомягкие неплохо так бустанули работу с докер десктопом, как минимум прокидывают нугет из хостовой машины, и всякий шлак для дебага.

А что там за магия в "добавить поддержку докер?"

Там создаётся ровно тот же файл что на скрине у автора, вот и все.

(Я естественно имею в виду именно этап файла, не более, естественно там больше возможностей), тут предлагается его зачем-то брать либо со скрина, либо с сайта MS. Я строго про это.

Статью невозможно читать, одни ошибки/опечатки на каждом шагу чего стоят. Про код уже молчу, новичкам вообще нежелательно на это натыкаться. Несерьезно подошли очень, товарищ автор

Вспомнил момент, перечитал.

В статье идёт настройка за nginx, но где настройка распаковки адресов? Чтоб asp.net core увидел настоящие адреса.

Всегда интересовала магия - зачем делать отдельными командами

COPY *.sln ...
COPY /app/*.csproj ...
COPY /app ....
?

Это для оптимизации процесса сборки (точнее сборок). Если скопировать *.sln и *.сsproj, то dotnet restore можно выполнить до копирования *.cs файлов. Если после этого изменяются только исходники, но не меняются требуемые nuget пакеты, то при очередной сборке не будет создаваться лишний промежуточный образ.

Sign up to leave a comment.

Articles