Невозможно установить или обновить до конкретной версии alpine/expat 2.6.0-r0 в образе alpine docker.

Вопрос или проблема

В связи с последними обнаруженными уязвимостями CVE-2023-52425, CVE-2023-52426, мне нужно обновить alpine/expat с 2.5.0-r2 до expat 2.6.0-r0 в моем образе Docker на базе Alpine.

Я пробовал различные способы (см. ниже) для обновления версии пакета expat во время сборки Docker, но полученный образ по-прежнему показывает alpine/expat 2.5.0-r2. Я был бы признателен за любые советы по этому поводу.

Ссылка:
https://alpine.pkgs.org/3.19/alpine-main-x86_64/expat-2.6.0-r0.apk.html

В моем Dockerfile я попробовал следующие 3 способа установки expat 2.6.0-r0, но безуспешно:

  1. RUN apk update && apk add –upgrade –no-cache expat

  2. RUN curl -O http://dl-cdn.alpinelinux.org/alpine/v3.19/main/x86_64/expat-2.6.0-r0.apk
    RUN apk add –allow-untrusted expat-2.6.0-r0.apk

  3. RUN apk add –upgrade –no-cache expat –repository=’https://pkgs.alpinelinux.org/package/v3.19/main/x86_64/expat’

  4. RUN echo http://dl-cdn.alpinelinux.org/alpine/v3.19/main/x86_64/ >> /etc/apk/repositories
    RUN apk –no-cache –update add expatвведите описание изображения здесь

В моем Dockerfile, собранном в Eclipse FROM eclipse-temurin:17.0.9_9-jre-alpine, я добавляю:

RUN apk add --upgrade expat

После сборки Docker-образа SNYK больше не обнаруживал никаких уязвимостей.

В итоге мне удалось решить эту проблему:
так как я собирал свой образ поэтапно, если я размещал

apk add --upgrade expat

на последнем этапе, была применена последняя версия.
Сначала я пытался применить обновление на 2-ом этапе сборки,
и, как мне кажется, обновления не распространились на 3-ий этап.

Ответ или решение

Чтобы решить проблему обновления пакета expat до версии 2.6.0-r0 в образе Docker на базе Alpine, учтите несколько важных моментов, которые повлияют на успешное выполнение этой задачи. Вы столкнулись с проблемами, когда попытки обновления не приводили к желаемому результату.

Возможные решения

  1. Правильный выбор образа: Убедитесь, что базовый образ, от которого вы начинаете сборку, действительно предполагает использование нужной версии пакета. В вашем случае образ eclipse-temurin:17.0.9_9-jre-alpine может по умолчанию использовать более старую версию expat.

  2. Обновление в конечном слое сборки: Как вы и заметили, если вы используете многоступенчатую сборку Docker, важно обновлять пакет на последнем этапе сборки. Это связано с тем, что изменения в промежуточных этапах могут не передаваться. Убедитесь, что вызов apk add --upgrade expat осуществляется в последнем слое вашего Dockerfile. Пример:

    FROM eclipse-temurin:17.0.9_9-jre-alpine AS builder
    # Другие команды для сборки
    
    FROM eclipse-temurin:17.0.9_9-jre-alpine
    RUN apk update && apk add --no-cache expat
  3. Проверка репозиториев: Убедитесь, что ваш образ Alpine настроен на использование правильно конфигурированных репозиториев. Вы можете добавить или обновить репозиторий в /etc/apk/repositories. Убедитесь, что у вас есть актуальные ссылки:

    RUN echo "http://dl-cdn.alpinelinux.org/alpine/v3.19/main/" >> /etc/apk/repositories
    RUN apk update && apk add --no-cache expat
  4. Использование флага --no-cache: При добавлении пакетов рекомендуется использовать флаг --no-cache, чтобы избежать использования кэша старых версий пакетов.

  5. Проверка установленных пакетов: После завершения сборки образа, не забудьте проверить установленную версию expat с помощью команд:

    RUN apk info expat

Это обеспечит вам уверенность в том, что нужная версия установлена.

Пример полного Dockerfile

Вот пример Dockerfile, который должен работать для вашего случая.

FROM eclipse-temurin:17.0.9_9-jre-alpine AS builder
# Ваши команды для сборки

FROM eclipse-temurin:17.0.9_9-jre-alpine
RUN echo "http://dl-cdn.alpinelinux.org/alpine/v3.19/main/" >> /etc/apk/repositories
RUN apk update && apk add --no-cache expat
RUN apk info expat  # Для проверки версии

Заключение

Убедитесь, что все команды выполняются в правильном порядке и на нужной стадии сборки. Применение этих рекомендаций должно помочь вам успешно обновить expat до версии 2.6.0-r0 и устранить выявленные уязвимости.

Оцените материал
Добавить комментарий

Капча загружается...