Как стать автором
Обновить

Комментарии 13

Сразу на начале завалился. Во-первых docker-compose. Через тире. ERROR: In file './docker-compose.yml', service 'ports' must be a mapping not an array.. Что может быть?

Раньше docker-compose (через тире) был отдельной утилитой, которую как бинарник отдельно качали и делали симлинк на каталог бинарников. Сейчас docker compose (без тире), начиная с версии 2.0, входит в стандартный пакет докера и ставить отдельно его не надо. По сути все тоже самое, поменяли просто API обращения к Docker Compose в CLI.

По поводу ошибки маппинга портов, уверен на 99%, что проблема в отступах в yaml файле, в статье все съехало. Должно быть так:

version: '3'
services:
  localRabbitMQ:
    image: rabbitmq:3-management-alpine
    environment:
      RABBITMQ_DEFAULT_USER: user
      RABBITMQ_DEFAULT_PASS: password
    ports:
      - 5672:5672
      - 15672:15672

Приложу свой пример 2х летней давности, если Автор не против. По сути ничего не изменилось. Оно и 5 лет назад делалось также :) https://github.com/binakot/Java-Spring-RabbitMQ-Example

Код в статье поправил. Действительно, просто поехал yml при переносе. Про docker compose up, @binakot верно подметил. В статье использовался Docker Desktop. Система Windows

Посмотрев на первые же листинги немного удивился.

  • разве автоконфигурация из spring-boot-starter-amqp не создает ConnectionFactory/AmqpAdmin/RabbitTemplate?

  • почему @EnableRabbit на компоненте (а не на конфигурации)?

  • если хотите health endpoints -- используйте челевоческий spring-boot-starter-actuator

Минутка занудства: если lombok нужен только для "@Data" не лучше уж использовать рекорды, раз проект на 17й версии?

Я бы сказал, если есть рекорды, то лучше вообще отказаться от ломбока.

Спасибо за советы, что-то вылетел из головы рекорд, если честно.

Не соглашусь, Lombok умеет несколько больше чем рекорды. Если честно, до сих пор не понимаю какое преимущество использовать их вместо ломбока. Может быть вы сможете подсказать?

Ну и с record'ами людям периодически нужны @With/@Builder. Плюс, иногда нужны полноценные древние java beans, там либо руками, либо @Data

Какой смысл в docker-compose, если нет воспроизводимого результата? Контейнер удален, конфигурация RabbitMQ вместе с ним, конфигурацию нужно либо через композ передавать, либо создавать свой образ с нужным конфигом, приложение с докер docker-compose должно стартовать в полностью работоспособном состоянии, без необходимости куда-то заходить и что-то создавать руками. Не указан volume для RabbitMQ, в результате, на сколько я помню, при каждом запуске будет создаваться новый, размером с гигабайт и если поднимать на виртуалке с ограниченным объемом памяти, то вы очень быстро заметите стремительное уменьшение дискового пространства. В Spring Boot конфигурационные параметры тоже должны задаваться через проперти, а не хардкодом. Где общий docker-compose файл, который поднимает все приложение вместе с инфраструктурой в работоспособном состоянии?

Все верно. Пример из статьи только для изучения подходит, для продакшена не годится.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории