Рубрики
Uncategorized

Intro to Docker 2 — Docker -Compose и упаковка приложения Springboot

Введение В предыдущей статье мы увидели, что такое Docker, как контейнеры полезны в качестве нового Devo … с меткой Docker, Java, Spring, DevOps.

Введение

В предыдущей статье мы увидели, что такое Docker, как контейнеры полезны в качестве новой тенденции DevOps, и мы узнали разницу между контейнерами и изображениями, а также узнали о DockerFile.

Теперь мы узнаем о команде Docker-Compose и о том, как использовать для запуска приложения Springboot из локального контейнера. Но, прежде чем сделать это, нам нужно упаковать приложение Spring Boot с Docker. Посмотрим, как это сделать.

Задачи на приложение Spring Boot

Первое, что мы сделаем, — это иметь базовое приложение на основе Spring Boot, которое мы можем сделать. Для этого мы можем использовать базовое приложение, которое поставляется с пружинными лесами при использовании Spring Initiazr в IntelliJ, и мы добавим очень простую конечную точку, которая просто вернет приветственное сообщение в формате JSON. В случае, если у вас нет Spring Initiazr, это не имеет значения, если вы можете разоблачить конечную точку и запрашивать ее через Mockmvc тестовый объект или инструмент, такой как почтальон.

Для справки, вот наша структура пакета приложений:

Мы можем заметить, что Dockerfile размещен в корневой папке всего проекта. Это будет файл, используемый для управления всеми деталями нашего изображения, его Технические характеристики .

Затем файл будет использоваться для создания изображения Docker, и с этого изображения, как только он эффективно работает, у нас будет наш контейнер.

Чтобы докеризировать приложение Spring Boot (или любое приложение), необходимо указать в нашем Dockerfile Все, что нам нужно, чтобы запустить наше приложение. По сути, это должно быть многоуровневым описанием всех шагов, которые мы предпримуте, чтобы построить и запустить наше приложение локально, в формате, который может быть:

  • воспроизводимый: DockerFile всегда должен привести к одному и тому же изображению после его запуска и полностью указана. Любой, кто использует это изображение, всегда будет получать точно такую же функциональность.

  • Независимый от окружающей среды: По сути, сила докера опирается на тот факт, что многие услуги по инфраструктуре и DevOps теперь поддерживают его в своих трубопроводах разработки, так что всякий раз, когда произойдет толчок нового кода в указанную филиал, это вызовет полное восстановление Docker Image, а затем разработчики могут использовать его через Docker-Compose Бесплано, или новейшее изображение будет доступно в реестре, который будет выявлен в качестве микросхема для мира через Nginx и т. Д.

Поскольку после окончания компиляции единственное, что нам действительно требуется, чтобы запустить приложение Springboot, — это файл JAR, содержащий скомпилированный код, если мы используем базовое изображение Java для создания собственного, мы можем обернуть наше приложение Springboot в контейнер Docker, определив точку входа как запуск файла JAR:

FROM openjdk:8
COPY target/greeter-*.jar greeter.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","greeter.jar"]

Таким образом, мы строим наше изображение из базового изображения с Java 8 OpenJDK, затем мы копируем файл JAR (который должен существовать в нашей локальной машине на том же уровне папок, что и Target и сам Dockerfile) из нашей локальной системы в каталог корневых контейнеров.

Затем мы выставляем порт 8080 из контейнера, чтобы быть доступным снаружи. Это тот же порт, что и служба Springboot, в противном случае контейнер не будет знать, где работает сервис.

Наконец, мы просто называем Java, чтобы начать наш сервис с банки, которую мы только что скопировали в контейнер с нашей местной машины. Это означает, что При запуске контейнера из изображения, построенного через этот Dockerfile, мы эффективно запустим приложение Springboot Анкет

А докер-состав командование

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

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

Давайте предположим, что наше приложение потребовало имени пользователя и аутентификации пароля в нашей конечной точке. Чтобы определить эти переменные, мы можем написать Docker-compose.yml Файл, который мы размещаем на том же уровне, что и DockerFile, и там мы можем указать, из какого DockerFile для создания контейнера или какого изображения использовать (или оба для локальных сборок и использования удаленных изображений), а также, как обслуживает состав контейнеров будет использовать, а также необходимые переменные среды.

Простой Docker-compose.yml может быть:

version: '3'
services:
  web:
    build: .
    ports:
      - "8080:8080"
  environment:
    - - password="Pass"

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

Затем мы определяем переменные среды, доступные для нашего сервиса, точно так же, как мы определяем в Application.properties файл или оболочка.

Чтобы использовать этот файл, чтобы запустить контейнер, мы просто делаем:

Docker -Compose -f <Путь для составления файла> -d вверх

Который будет использовать файл Compose для создания и создания наше контейнер и запустить службу, настроенную с этой средой.

гарантирует, что контейнер продолжает работать на заднем плане и вверх начинает это.

Compose позволяет разработчикам нанимать изображение локально на своих машинах, запускать его и тестировать его локально, что очень полезно.

Вывод

Мы видели, что Docker-Compose Как это помогает разработчикам тестировать определенные функциональные возможности и изолировать проблемы в контролируемой среде, и мы увидели, что необходимо для упаковки приложения Springboot с Docker. Следите за обновлениями!

Оригинал: «https://dev.to/brunooliveira/intro-to-docker-2-docker-compose-and-packaging-a-springboot-application-2366»