Перейти к содержимому
Главная страница » Spring Boot в Docker

Spring Boot в Docker

В этой статье мы рассмотрим, как настроить развёртывание с помощью docker-compose для приложения Spring Boot, использующего базу данных MySQL.

Подготовка к развертыванию

Прежде чем двигаться дальше, мы рекомендуем проверить, правильно ли установлен Docker. 
Мы можем использовать следующую команду в cmd/терминале, которая показывает версии клиента и сервера. 

docker version
Client: Docker Engine - Community
 Version:           27.0.3
 API version:       1.46
 Go version:        go1.21.11
 Git commit:        7d4bcd8
 Built:             Sat Jun 29 00:02:50 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          27.0.3
  API version:      1.46 (minimum version 1.24)
  Go version:       go1.21.11
  Git commit:       662f78c
  Built:            Sat Jun 29 00:02:50 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.18
  GitCommit:        ae71819c4f5e67bb4d5ae76a6b735f29cc25774e
 runc:
  Version:          1.7.18
  GitCommit:        v1.1.13-0-g58aa920
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Все в порядке! Docker установлен, а значит можно шаг за шагом докеризировать приложение Spring Boot. Весь процесс включает в себя следующие шаги:

  • Создание приложения Spring Boot
  • Создайте исполняемый JAR-файл
  • Создайте файл Docker
  • Создание образа Docker
  • Запустите образ Docker

Создание приложения Spring Boot

И так для создания простейшего приложения нам нужно, более подробно пример описан на сайте spring.io:

Создадим проект

Для создания проекта воспользуемся сайтом start.spring.io. В диалоге «Dependense» найти и добавить зависимость «web». Нажать кнопку «Generate», скачать zip-файл и распаковать его в папку на компьютере.

Добавим код

Открыть проект в среде разработки и найти файл DemoApplication.java в папке src/main/java/com/example/demo. Изменить содержимое файла, добавив код (или заменив):

package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class DemoApplication {
    public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
    }
    @GetMapping("/hello")
    public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
      return String.format("Hello %s!", name);
    }
}

Это весь код, необходимый для создания простого веб-сервиса «Привет, мир!» в Spring Boot. Добавленный метод hello() предназначен для приёма строкового параметра name, а затем объединения этого параметра со словом "Hello" в коде. Это означает, что если вы укажете в запросе имя "Amy" в качестве параметра, то ответом будет «Hello, Amy».

Собираем и запускаем приложение

Перенесем каталог на сервер, перейдем в каталог demo и выполним команду:

macOS / Linux:

COPY./gradlew bootRun

Windows:

COPY.\gradlew.bat bootRun

Встроенный в Spring Boot сервер Apache Tomcat работает как веб-сервер и принимает запросы на localhost порту 8080. Откройте браузер и в адресной строке вверху введите http://localhost:8080/hello. Вы должны получить дружественный ответ, подобный этому:

В качестве пути можно указать IP адрес сервера, если вы выполняете действия на удаленном сервере, а не локально.

http://IP сервера:8080/hello

Если вы используете Apache Maven, чтобы создать JAR-файл приложения Spring на основе Maven, мы можем использовать следующую команду:

mvn clean install

Команда создаст файл JAR в целевом каталоге проекта. По умолчанию созданный файл JAR имеет то же имя, что и приложение.

Теперь, когда JAR файл приложения готов, перейдем к следующему шагу и создадим Dockerfile в корневой папке приложения.

Создание Dockerfile

Это основной файл Docker, содержащий все инструкции для докеризации приложения Spring Boot. 
Итак, создайте файл Docker в корневой папке приложения.

FROM openjdk:11
WORKDIR /app
LABEL maintainer ="dockerhosting"
VOLUME /main-app
ADD target/app.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar","app.jar"]
  • Команда FROM импортирует образ Java из библиотеки Docker в наш контейнер, чтобы наше приложение Spring Boot могло работать.
  • LABEL команда задает ярлык для этого образа 
  • ADD команда используется для добавления JAR-файла нашего приложения spring boot в контейнер docker.
  • ENTRYPOINT используется для указания команды запуска. Мы можем заметить, что массив строк в совокупности образует команду, которую мы обычно используем для запуска JAR-файла из командной строки/терминала. Эта команда запускает наше приложение Spring Boot в контейнере Docker.

Создание образа Docker

Теперь создайте образ Docker, чтобы объединить все эти файлы (JAR и Dockerfile) в единое целое. В терминологии Docker это называется образом, который выполняется независимо в контейнере Docker.

Чтобы создать образ, docker предоставляет следующую команду:

docker build – t springdocker:latest .

Это создаст образ в контейнере Docker. Флаг -t используется для установки тега для образа, а двоеточие (:) используется для установки имени тега, тогда как точка (.) относится к текущему каталогу.

Вы можете проверить созданный образ с помощью приведенной ниже команды.

docker images

Запуск Spring Boot приложения в Docker

docker run -p 8080:8080 springdocker 

Эта команда сопоставляет порт 8080 вашего локального компьютера с портом 8080 контейнера, позволяя вам получить доступ к вашему приложению через http://localhost:8080/hello.

Используемые материалы при написании инструкции:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *