Kentavr16
@Kentavr16
long cold winter

Докер и прочие контейнеризаторы — для доставки контента или также для разработки?

Вопрос с большой долей вероятности покажется вам идиотским. Но. Вот я потратил некоторое количество времени на изучение веб-разработки. Дошел до изучения докера, так как это мастхэв веб-разработчика судя по статьям/требованиям работодателей. Смотрю доки, статьи, обучающие видео. Но так до конца и не понял - нужен ли мне докер для самого процесса веб-разработки? Или все же это инструмент в первую очередь для доставки контента? Пока не вижу никаких преимуществ от разработки под докером - вижу что технически это реально, но билдить каждый раз после внесения изменений в код - что я от этого выиграю? Как с этим дела в реальной жизни, на реальном среднестатистическом проекте? Никак не могу получить целостную картину. Возможно ткнете на статью/доки, где подробно о практическом применении. Вот подобный вопрос на хэтом же ресурсе, но и там я не получил твердого ответа. Только что-то вроде "в веб-деве докер нужен, учи, там поймешь что к чему". Заранее спасибо за ваши наводки. Прошу не копипастить ссылку на офдокументацию самого докера/намекать на тупость вопроса, а отнестись с пониманием.
  • Вопрос задан
  • 181 просмотр
Решения вопроса 6
fenrir1121
@fenrir1121
Начни с документации
Если ты собрал и у тебя работает на локальной машине - не факт что заведётся на тесте/стейдже/проде.
Если ты собрал и у тебя работает в контейнере - оно вероятно будет работать везде и с одной команды.
Ответ написан
@Drno
Смысл в том, что все пакеты, зависимости итд можно упаковать в 1 контейнер, который с помощью 1 yml файла потом можно поднять фактически где угодно ( на любом линукс) с вероятностью в 99%

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

Ну банально упрощает развертывание. Но обычно этим занимаются девопсы конечно, а не прогеры... Но проблема в том, что только прогеры знают, какие зависимости и каких версий должны стоять, так что эти вопросы придется решать)
Ответ написан
Комментировать
@dronmaxman
VoIP Administrator
>Или все же это инструмент в первую очередь для доставки контента?
Докер упрощает процесс доставки контента, но это не едиственный его плюс. Он позволяет быстро создать,воссоздать,повторить аналогичное окружение и зависимости которые необходимы твоему приложению в любом (почти) месте где есть поддержка docker.

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

> Как с этим дела в реальной жизни, на реальном среднестатистическом проекте?
Повсеместно испольуется. Следующий шаг развития докер это k8s, а это mainstream. Если ты умееш работать с докером, то освоить k8s уже намного проще.

Если сильно упростить то контейнер докер это виртуальная машина на linux внутри которой крутиться одно приложение. В идеологии докера каждое приложение должно быть в отдельном контейнере - mysql,redis,php.

Докер позволяет обойти проблему зависимостей.

Помню когда первый раз столкнулся с docker, это была система анализа логов от ruckus. По своей структуре это был centos на котором было запущено 8-9 контейнеров docker. Таким подходом ruckus как минимум решил для себя проблему установки обновлений, тебе не надо ставить обновления на саму ОС, тебе достаточно обновить контейнер. Если контейнер не запустился, то просто откати его. Все библиотеки и зависимости внутри контейнеров. Это настолько упростило процесс разработки и доставки обновлений, что сложно и представить.
Ответ написан
Комментировать
@Everything_is_bad
но билдить каждый раз после внесения изменений в код
докер для разработки, это поднять именно окружение под проект или части проекта, например, для фронтендера, можно в докере локально поднять бекенд, а чтобы не пересобирать на каждый чих, ты свой код выносишь наружу
Ответ написан
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Дошел до изучения докера, так как это мастхэв веб-разработчика судя по статьям/требованиям работодателей.

Нет.Это полезно знать, но далеко не всегда стоит применять.

Как с этим дела в реальной жизни, на реальном среднестатистическом проекте?

Среднестатистическому проекту контейнеризация вообще не нужна. И даже там, где нужна, зачастую с ней имеют дело админы, а не разработчики.

В разработке докер нужен только тогда, когда вы ведёте множество проектов, которые требуют разных окружений и не поддерживают собственных средств виртуализации. Например разработка чего-то системного на C.
В развёртывании докер нужен тогда, когда у вас сотни динамически разворачиваемых серверов. Если у вас одна VPS'ка, то докер - это оверкилл.
Ответ написан

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

Главное преимущество в том что у тебя инфраструктура на проде и инфраструктура при разработке похожие=> в случае проблем, они будут быстро вскрываться.

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

Опять же само окружение можно в докер впихнуть - базы данных, бэкенд, всякие nginx-ы.
Если у тебя при разработке много нужно устанавливать - можно даже само окружение для разработчика контейнеризировать через Devcontainers.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы