Есть проект на Spring Boot, который собирается в исполняемый файл.
В проект уже вшит Maven Wrapper (инструмент сборки), поэтому никаких дополнительных инструментов, кроме Java 17 на сборочной машине не нужно
Сборка запускается командой:
./mvnw verify
Исполняемый файл, получаемый в результате сборки будет в target/app.jar
, для запуска достаточно команды:
./target/app.jar
В процессе сборки прогоняются авто-тесты (их отключать не нужно), авто-тесты требуют для своей работы СУБД PostgreSQL
По умолчанию, используется следующий URL для подключения: jdbc:postgresql://localhost:5432/db?user=app&password=pass
При необходимости, URL можно поменять, задав переменную окружения JDBC_URL
Схема и данные, необходимые для прохождения авто-тестов, расположены в каталоге docker-entrypoint-initdb.d
API доступно по адресу: http://localhost:8080/api/items
Healthcheck стандартный для Spring Boot Actuator
- С помощью образа bitnami/java:17 собрать всё, прогнав авто-тесты (
./mvnw verify
и авто-тесты прогонит, и соберёт) - Запаковать результаты сборки в образ bitnami/java:17, указав в качестве
ENTRYPOINT
["app.jar"]
- Выложить всё в виде публичного образа на GHCR (GitHub Container Registry)
Нужно максимально использовать кэширование: если pom.xml
не менялся, то желательно не прогонять заново скачивание зависимостей при сборке (так же, как JS-ники делают с package.json
)
Вносить изменения в исходный код не нужно
Рекомендуется, но не обязательно, запускать приложение не от root
- Всё должно быть оформлено в виде публичного репозитория на GitHub
- Вся сборка образов должна проходить через GitHub Actions
- Образ должен выкладываться в GitHub Container Registry (GHCR)
К текущему заданию дополнительно предъявляются требования:
- Docker Buildx Build (указывайте явно при сборке
docker buildx build
) - Multi-Stage