Используйте пружинный привод с конструктором Docker-Image по умолчанию Spring-Boot
Я использую Spring-Boot 2.4.4 в среде Docker, управляемой файлом docker-compose.yml и визуализируемой с помощью portainer. Я создаю свои образы Docker с помощью встроенного конструктора Spring-Boot (с пакетами paketo-buildpack)
mvn spring-boot:build-image
Я хочу, чтобы мой контейнер Docker контролировался с помощью пружинного привода. Поэтому я добавляю зависимость maven и получаю желаемый результат, когда запускаю приложение локально и обращаюсь к определенной странице:
http://localhost:8080/actuator/health
Поскольку я использую встроенный конструктор образов Docker Spring-Boot, у меня нет файла Dockerfile для добавления точки работоспособности. Когда я добавляю healtheck в свой docker-compose.yml, команда wget не обнаруживается:
healthcheck:
test: wget --spider --quiet 'http://localhost:8080/actuator/health/' || exit 1
interval: 10s
timeout: 3s
retries: 10
start_period: 10s
Что я делаю не так? Я не нашел никакой документации в Интернете. Я думал, что Spring-Boot сможет обнаружить пружинный привод сам по себе, но я думаю, что это не так.
2 ответа
Ни один
wget
ни
curl
Команды включены в базовый образ, который используется для запуска приложения Spring Boot. Возможно, вы можете смонтировать еще один том утилит: qaru.site/questions/435 / ...
Или просто напишите другое легкое Java-приложение для запроса актуатора работоспособности, сопоставьте результат с кодом выхода. Затем упакуйте его в jar, создайте еще один образ с пакетом jar на основе образа приложения Spring Boot. После этого проверка работоспособности может выполняться с
java -jar
команда.
Вы можете переключить построитель, который используется при упаковке образа контейнера. См. Параметры настройки изображения здесь .
Строитель по умолчанию
paketobuildpacks/builder:base
, в котором есть образ запуска, не содержащий или. Вы можете переключить строителя на
paketobuildpacks/builder:full
и у вас должно быть (возможно, также
wget
, Я не уверен, что у меня в голове).
Компромисс здесь заключается в том, что образ запуска больше, поэтому размер ваших созданных образов будет увеличиваться. Полный образ содержит довольно много материала и весит около 1 ГБ, по сравнению с примерно 100 МБ для базового образа.
Docker умеет загружать слои, поэтому, если у вас есть 50 приложений, основанных на одном и том же полном образе компоновщика, это не приведет к загрузке 50G. Docker (и другие среды выполнения контейнеров) загружают только те слои, которых у него еще нет, так что дополнительный гиг в основном загружается один раз. В конечном итоге вам нужно будет определить, насколько удобство использования
curl
стоит дополнительного размера на изображениях.