В чем преимущество dockerize веб-приложения SPA - PullRequest
0 голосов
/ 21 февраля 2019

Я докеризирую свое веб-приложение SPA, используя nginx в качестве базового образа, затем копирую свой nginx.conf и собираю файлы.Как упоминалось в Dockerize Vue.js App , я думаю, что многие решения для dockerizing SPA похожи.

Если я не использую docker, я сначала соберу код SPA, затем скопирую файлы сборки в корневой каталог nginx(После установки / настройки nginx я почти не изменяю его)

Так в чем преимущество докеризации SPA?

----- update -----

В одном ответе говорилось: «Если приложение докеризуется каждый раз, когда вы выпускаете новую версию своего приложения, сервер Nginx получает все новоедля него доступны обновления. "Я не согласен с этим вообще.Мне не нужна последняя версия nginx, ведь я использую только базовую функцию nginx.Некоторые члены моей команды просто используют версию nginx в комплекте с linux при разработке.Если в моем образе докера используется последняя версия ngixn, то фактически создается среда, отличная от среды разработки.

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

Ответы [ 3 ]

0 голосов
/ 21 февраля 2019

Такие инструменты, как Webpack, компилируют приложения Javascript в статические файлы, которые затем могут обслуживаться по вашему выбору на HTTP-сервере.После того, как вы создали свой SPA, созданные файлы неотличимы от таких страниц, как index.html, и других ресурсов, таких как файлы изображений: это просто статические файлы, которые обслуживаются каким-либо HTTP-сервером.

Контейнер Docker инкапсулируетодин запущенный процесс.Он не очень хорошо справляется с хранением этих статических файлов как таковых .

. Вы часто будете видеть «контейнеры Docker SPA», на которых работает HTTP-сервер, ориентированный на разработчика.Там нет особой выгоды делать это, хотя.Вы можете получить столь же хороший опыт разработчика, просто разрабатывая свое приложение локально, запуская npm run build или что-то еще, чтобы создать каталог dist, а затем публикуя его так же, как и другие ресурсы.Здесь полезен конвейер автоматизации, но это не задача, которую Docker значительно упрощает.

(Также помните, что когда вы делаете это, встроенное приложение запускается в браузере пользователя. Это означает, что оно не может видеть ничегомеханизма внутренней сети Docker: он не может использовать внутренние IP-адреса Docker и не может использовать встроенную службу Docker DNS. Все, что он достигает, должно быть на docker run -p опубликованных портах, и он должен использоватьDNS-имя, которое достигает хоста. Браузер буквально не подозревает, что Docker вообще вовлечен в это.)

0 голосов
/ 21 февраля 2019

Есть несколько преимуществ.

Во-первых, создание образа Docker означает, что вы явно указываете, какова каноническая среда выполнения вашего приложения - эта версия nginx с такой конфигурацией SSL, что угодно.Изменения во время выполнения находятся в управлении исходным кодом, поэтому вы можете выполнять предсказуемое и обратимое обновление.Вы говорите, что не хотите «последнюю версию» - но что, если эта последняя версия исправляет критическую уязвимость безопасности?Возможность «предсказуемого» обновления для «одноразовых» контейнеров означает, что вы будете обновляться, когда захотите.

Во-вторых, если вся команда разработчиков использует один и тот же образ Docker, вы избегаете проблем с различными конфигурациями, давая «это работает».на моей машине "реакция на ошибки" - в SPA разные конфигурации nginx могут привести к разному поведению.Новым разработчикам, которые присоединяются к команде, не нужно ничего устанавливать или настраивать, и они могут использовать любое устройство по своему усмотрению - они могут быть уверены, что то, что работает в Docker, такое же, как и для всех других разработчиков.

В-третьих, упаковав все свои среды (не только разработку, но тестирование и производство), вы облегчаете перемещение версий по конвейеру и изменяете только значения, специфичные для среды.

Теперь для SPA эти преимущества реальны, но они могут не перевесить затраты и усилия по созданию и поддержке образов Docker - образ Docker неизбежно становится узким местом и первым, кого обвиняют.Я бы инвестировал в это только в том случае, если вы видите много проблем, связанных с конкретной средой (необходимо наличие согласованной среды выполнения), или если вы видите много ошибок типа «это работает на моей машине».

0 голосов
/ 21 февраля 2019

Если я не использую Docker, я сначала соберу код SPA, затем скопирую файлы сборки в корневой каталог nginx (После установки / настройки nginx я его почти не изменяю)

Это проблема безопасности ... Огонь и забыть - это то, что, по-видимому, делается здесь в отношении сервера.

Если приложение докеризуется каждый раз, когда вы выпускаете новую версию своего приложения, сервер Nginx получаетвсе новые обновления доступны для него.

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

Так в чем преимущество докеризации SPA?

Одинаковая среда для разработки, подготовки и производства.Это называется 100% -ной четностью на всех этапах, когда вы запускаете свое приложение, и это верно для любого типа приложения, которое вы развертываете.

Если что-то не работает в производственном процессе, вы можете получить образ докера с помощьюдайджест и запустить его локально для отладки и попытаться понять, в чем проблема.Если вам нужен ssh на рабочий сервер, это означает, что у вас произошел сбой в конвейере автоматизации или, возможно, вы даже не используете его ...

...