Фиксированная версия Alpine Linux Apk пакета (в контейнере)

Можно указать версию при установке apk на alpine например apk add ffmpeg=3.0.7-r0, В контейнерах это типичный сценарий, потому что вы хотите что-то неизменное, поэтому вы добавляете в файл Docker:

RUN apk add --no-cache ffmpeg=3.0.4-r1

проблема в том, что через некоторое время вы можете (будете) получить ошибку примерно так:

ERROR: unsatisfiable constraints:
  ffmpeg-3-0.7.0-r0:
    breaks: world[ffmpeg=3.0.4-r1]

Поэтому необходимо изменить версию и переустановить пакет. Я читал, что устанавливать ограничения версий небезопасно, так как версию можно удалить из репозитория, совет не указывать версию и "пусть apk обрабатывает ее" - для меня это действительно странно, возможно, я чего-то не понял, Если удалить версию, ну, вы на самом деле не неизменны, и вещи, которые могут отличаться на разных машинах, в конечном итоге получают ошибки.

Какова стратегия получения неизменяемой версии контейнера с установленными такими пакетами?

1 ответ

Это невозможно при использовании apk, но сборка программ из исходного кода позволяет определить конкретную версию. Оформить официальные изображения nodejs для примеров. Они собираются из исходного кода для поддержки определенных версий nodejs.

Другие вопросы по тегам