Среда разработки Spring Boot


Введение

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

Здесь ниже я объясню, как настроить среду для разработки с использованием Spring Boot и базы данных Mongo, однако вы можете без проблем использовать и другую базу данных.

Нам нужно сделать три основные вещи, чтобы иметь возможность разрабатывать с помощью Docker, шаги следующие:

  1. Создать проект, используя стандартные средства для этого.
  2. Настроить pom.xml для упаковки .jar файлов.
  3. Создать файлы Docker (Dockerfile и docker-compose.yml).
  4. Настройте отладчик в IDE, здесь мы будем использовать Intellij.

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

При создании проекта Spring Boot с помощью веб-сайта мы настроим его, как показано ниже:

При необходимости вы можете изменить некоторые конфигурации, важны только следующие:

  • Проект: Maven
  • Язык: Java
  • Упаковка: Jar

Убедитесь, что в вашем pom.xml указан путь к основному классу и установлена опция repackages, это будет необходимо для генерации .jar файла.

<build>  
   <plugins>  
      <plugin>  
         <groupId>org.springframework.boot</groupId>  
         <artifactId>spring-boot-maven-plugin</artifactId>  
         <executions>  
            <execution>  
               <configuration>  
                  <mainClass>com.trantorinc.spring-boot-local-dev-docker.Application</mainClass>  
               </configuration>  
            </execution>  
            <execution>  
               <goals>  
                  <goal>repackage</goal>  
               </goals>  
            </execution>  
         </executions>  
        </plugin>  
   </plugins>  
</build>
Вход в полноэкранный режим Выход из полноэкранного режима

Настройка окружения

Для настройки среды разработки нам понадобятся два типа файлов docker: Dockerfile и docker-compose.yml:

Dockerfile

FROM maven:3.8.4-jdk-11  

ENV JAVA_TOOL_OPTIONS -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005  
ENV JAVA_DEBUG true
Войти в полноэкранный режим Выход из полноэкранного режима

Выше вы можете видеть, что мы используем официальный образ Maven и имеем две переменные, которые необходимы для настройки отладчика, что в основном делает, это выставляет опции отладки java в порт 5005.

docker-compose

  1. Spring Boot
version: '3.8'  
services:  
  my-app:  
    container_name: my-spring-boot-app
    build:  
      context: .  
      dockerfile: Dockerfile  
    command: java -jar target/myapplicationname-0.0.1-SNAPSHOT.jar  
    ports:  
      - 8080:8080  
      - 5005:5005  
    volumes:  
      - .:/usr/src/mymaven:rw  
    working_dir: /usr/src/mymaven  
Вход в полноэкранный режим Выйти из полноэкранного режима

Что делается выше? Сначала мы собираем образ docker, а затем выполняем команду для выполнения сгенерированного .jar. Также необходимо пробросить два порта, порт 8080 для доступа к Restful API localhost, а порт 5005 — для доступа к опции отладки. Кроме того, мы настраиваем том и работаем напрямую для приема изменений из нашего локального проекта.

  1. Mongo
  mongodb:  
    image: mongo  
    container_name: mongodb  
    ports:  
      - 27017:27017  
    volumes:  
      - /data
    environment:  
      - MONGO_INITDB_ROOT_USERNAME=rootuser 
      - MONGO_INITDB_ROOT_PASSWORD=rootpass
      - MONGO_INITDB_DATABASE=mydatabasename
volumes:  
  data: { }  

networks:  
  default:  
    name: mongodb_network
Вход в полноэкранный режим Выйти из полноэкранного режима

Выше мы просто создали службу для запуска образа mongo и настроили параметры базы данных. После этого мы создаем сеть для соединения двух созданных контейнеров.
При необходимости мы также можем создать службу для mongo express:

  mongo-express:  
    image: mongo-express:0.54  
    container_name: mongo-express  
    restart: always  
    ports:  
      - 8081:8081  
    environment:  
      - ME_CONFIG_MONGODB_ADMINUSERNAME=rootuser  
      - ME_CONFIG_MONGODB_ADMINPASSWORD=rootpass
      - ME_CONFIG_MONGODB_SERVER=mongodb
Вход в полноэкранный режим Выход из полноэкранного режима

После завершения этой части нам понадобится еще одна конфигурация, в src/main/resources открываем файл application.properties и вставляем следующую информацию:

spring.data.mongodb.authentication-database=admin  
spring.data.mongodb.username=rootuser  
spring.data.mongodb.password=rootpass  
spring.data.mongodb.database=mydatabasename  
spring.data.mongodb.port=27017  
spring.data.mongodb.host=mongodb  
spring.data.mongodb.auto-index-creation=true
Войти в полноэкранный режим Выйти из полноэкранного режима

В случае необходимости инициализации значений вы можете выполнить команды в mongo при запуске среды. Для этого нужно сделать несколько настроек.

  • Добавьте следующую строку в тома сервиса mongodb:
  • Внутри файла .js должно быть что-то вроде этого:
db = new Mongo().getDB('mydatabase'); 
db.createCollection('users'); 
db.users.insertMany([ 
    { 
        username: 'user01', 
        password: '123456', 
        email: 'user01@email.com' 
    }, 
    { 
        username: 'user02', 
        password: '654321', 
        email: 'user02@email.com' }, 
    { 
        username: 'user03', 
        password: '456456', 
        email: 'user03@email.com' 
    } 
]);
Войти в полноэкранный режим Выйти из полноэкранного режима

Настройка отладки

Теперь, чтобы подключить его к вашей IDE и иметь возможность отладки настройте его, здесь мы будем использовать Intellij. Итак, что вам нужно сделать, это создать один Remote JVM Debug.

  1. Нажмите на Edit Configuration:

  1. Create a Remote JVM Debug и настройте ниже:

Execution

  1. Выполните следующую команду для запуска среды
docker-compose up -d
Войти в полноэкранный режим Выйти из полноэкранного режима
  1. Нажмите кнопку отладки символа:

Заключение

После долгого дня настройки, я подумал, что руководство будет полезно для сообщества, потому что я столкнулся с несколькими проблемами, пытаясь настроить его, пока не пришел к этому решению. На любые вопросы я с удовольствием постараюсь ответить.
Доступ к файлам здесь!

Наслаждайтесь!

Оцените статью
devanswers.ru
Добавить комментарий