Являются ли папки с исходным и выходным кодом "приложением" в проектах использованием Docker?

Если раньше мои Full-Stack проекты подразделялись на папку для исходных файлов и папку для выходных файлов (такое подразделение естественно ввиду того, что исходный код я пишу на TypeScript), а файлы с метаданными и конфигурациями, такие как package.json были в корне проекта, то при переходе проектов на Docker организацию файлов, видимо, придётся пересмотреть.

Вот один из найденный мной примеров, в котором всё то, что раньше у меня лежало в корне проекта, теперь находится в docker/webpack.

введите сюда описание изображения

Тут же возникла путаница с терминологией: если раньше я с приложением отождествлял папку с проектом, то теперь в папке проекта будут и базы данных, и ещё всякие разные сервисы.

Таким образом, я теперь знаю следующие значения термина (веб)-приложения :

  1. Совокупность всех компонентов, таких как базы данных и микросервисы, а так же собранный исходный код прикладной логики. Ради примера позаимствовал схему из урока по Kubernetes, то есть в этом значении "приложением" называют в совокупности всё то, что на схеме нарисовано:

введите сюда описание изображения

  1. Результирующий интерактивное отображение в браузере,. (Например, когда рекламщик делает скриншоты UI и говорит "попробуйте новое приложение").

  2. Папка с исходным и/или выходным кодом прикладной логики серверной части, клиентской части или обоих.

Третий вариант, как я могу предположить, в контексте Docker-а уже не употребляется.

Среди тех примеров, что я видел, папки (соответствующие Image-ам) с серверной и клиентской частью называют крайне неочевидными именами, такими как webpack или web. А если сборку проекта осуществляет не только webpack, а ещё gulp?

Итак, вопрос: что же называется "приложением" в контексте Docker-проекта и как называют папку с прикладной логикой приложения (в отличие от папок с базой данных и сторонними сервисами).


Ответы (1 шт):

Автор решения: GrayHoax

Сначала хотел бы отметить для будущих читателей: Приложение, завёрнутое в докер ничем не отличается от приложения, выложенного на обычную виртуалку (за исключением способа развертывания). Docker контейнер — это способ передачи и дальнейшей оркестрации (в некотором смысле)

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

Теперь немного о Docker... В вопросе фигурирует понятие "папок", что меня немного смутило. Я предлагаю рассмотреть функцию докера (лучше сказать утилиту) - docker-compose. Это специальный файл и утилита его запуска для старта нескольких контейнеров с определенной зависимостью.

Например, чтобы приложение заработало, нужно поднять БД, кеш, MTA, nodeJS, nginx и ещё какой-нибудь бэк. Если поднимать всё руками - потребуется ввести с десяток команд перед тем, как всё заработает (когда и если :). Вместо этого придуманы специальные инструкции, которые поднимают компоненты (контейнеры Docker) с определенными параметрами

Именно наличие такой утилиты даёт возможность говорить, что к рамках поставки функционала приложение представляет собой набор компонент. Пример разделения приложения на компоненты

→ Ссылка