Я создаю файл dockerfile, который запускает пользовательское приложение, привязанное к определенной версии Java.
Я использую базовый образ centos7, потому что это то, о чем я говорил в статье, и потому что мне нужно что-то использовать, так что это ничуть не хуже других. Честно говоря, мне все равно, какой пользовательский мир я использую. Смысл этого образа - в размещаемом программном обеспечении, а сам дистрибутив Linux - всего лишь средство для достижения цели - что важно, JDK не будет использоваться другими приложениями или пользователями.
Как было сказано, мое приложение привязано к конкретной версии Java, которую я использую - любое обновление версии Java потребует полного регрессионного тестирования программного обеспечения с этим конкретную версию перед ее выпуском.
Статья, за которой я следил, началась с соответствующих частей установки JDK файла докеров, которые выглядели следующим образом:
FROM centos:centos7
RUN yum makecache \
&& yum update -y \
&& yum install -y \
java-1.8.0-openjdk-devel \
&& yum clean all
Это недостаточно конкретно, каждый раз, когда образы собираются, они получат случайную версию Java , а это не то, что я хочу, мне нужна конкретная версия Java.
Я изменил файл докера, чтобы он выглядел следующим образом:
FROM centos:centos7
RUN yum makecache \
&& yum update -y \
&& yum install -y \
java-1.8.0-openjdk-devel-1.8.0.65-3.b17.el7 \
&& yum clean all
И образ докера строился нормально. Это было в декабре.
На этой неделе мне нужно было внести небольшое изменение в другую часть программного обеспечения и пересобрать новую версию образа, но сборка образа теперь не выполняется.
Как это делают другие люди? Есть ли другой способ установки JDK, чтобы я мог иметь последнюю версию дистрибутива ОС с последними обновлениями (как определено базовым образом в предложении FROM и обновлении yum), но установить определенную версию JDK?
Есть ли версия Linux, более подходящая для такого рода требований (я не привязан к CentOS, пользовательский дистрибутив Linux для меня не особенно важен)?
Похоже, он видит нужный вам пакет, но по какой-то причине выполняется установка из репозитория обновлений.
Вы можете отключить репозиторий обновлений в своей команде yum;
yum install -y $package --disablerepo=updates