Столкнулся с интересной проблемой когда внедрял сборку контейнеров под ARM64 процессоры. Есть программа на Java контейнер которой использовал образ "eclipse-temurin:17-jre-alpine" в качестве базового. Для этого базового образа отсутствует вариант для платформы linux/arm64 и стоял вопрос что безопаснее сделать:
- перейти на "eclipse-temurin:17-jre-noble" который использует Ubuntu вместо Alpine
- перейти на "eclipse-temurin:21-jre-alpine" который влечёт обновление Java с 17 на 21
Разработчик выбрал первый вариант (перейти на "eclipse-temurin:17-jre-noble"), т.к. обновление версии Java выглядит рискованным (может повлечь неожиданные эффекты в какой-либо из библиотек) и требует полного цикла тестирования которое провести сейчас нет возможности.
Я также считал что замена Alpine на Ubuntu при сохранении версии Java является менее рискованным, хотя и повлечёт увеличение размера образа контейнера и возможные риски из-за замены musl на libc (хотя я не особо верю в вероятность таких неприятностей). Забегая вперёд, мы потратили несколько часов разбираясь почему программа перестала запускаться.