Как вы доставляете свое приложение, используя концепцию контейнеров (Docker Containers)

Это вопрос доставки и разработки микросервисов с использованием контейнеров.

Как вы доставляете свое приложение, используя концепцию контейнеров? Действительно ли мне нужно создавать Docker-контейнер с моим приложением при каждой сборке? Даже местные сборки?

Нужно ли копировать мое приложение Spring Boot, приложение Node.js или приложение другого типа в мой контейнер Docker? Или монтировать том с моим приложением - это лучший подход?

Нужно ли разрабатывать в локальной среде с использованием контейнера? Или в Spring Boot, например, лучший подход - это запустить Application.class в IDE, такой как Eclipse или Idea, для тестирования моего кода в локальной среде?

1 ответ

Решение

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

Местное развитие это отдельная история. Есть несколько подходов к этому, каждый со своими плюсами / минусами:

  1. Всегда создавайте образ докера даже для локальной сборки. Преимущество заключается в том, что локальное тестирование является "аутентичным" в том смысле, что вы тестируете его в том же контейнере, что и в конечном итоге развернутый на производстве. Очевидным недостатком является то, что сборка Docker может быть медленной (даже с кэшированием).

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

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

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