На основе какой логики следует принимать решение о разделении приложения на несколько Docker image-ев?
Я заметил, что приложение и базу данных обычно разносят на два Docker image. Мне, как новичку в Docker, неочевидно, по какой причине следует так поступать (или не следует).
В будущем я планирую создавать Full-stack приложения на Node.js, а базой данный, я думаю, будут либо MySQL либо SQLite. Основной образ будет на основе FROM node:12.4 (не знаю, на какой операционной системе он основан, до для работы приложения нужен прежде всего Node.js рантайм). Теперь: что насчёт базы данных? Может её можно как-то интегрировать в тот же FROM node:12.4, а можно взять ещё один образ и с помощью Docker-compose создать два новых контейнера и запустить их. Какие достоинства и недостатки у этих двух подходов?
Ответы (1 шт):
На основе принципа разделяй и властвуй.
Делите приложение на составные части так чтобы в будущем можно было заменить ту или иную часть на аналогичную. Держитесь паттерна стратегия по возможности. По поводу разнести базы и сервис это не держать всё яйца в одном месте.