Удалите Curl и libcurl или обновите их до последней версии (>=8.0) в Docker в базовом образе Nginx. ⇐ Linux
-
Anonymous
Удалите Curl и libcurl или обновите их до последней версии (>=8.0) в Docker в базовом образе Nginx.
У меня есть базовое изображение под названием docker-base, в котором есть файл Dockerfile, как показано ниже:
ОТ nginx:latest # Создать каталог приложения РАБОЧИЙ ПАРАМЕТР /var/www/app ЗАПУСК rm /etc/nginx/conf.d/default.conf # Установите зависимости приложения КОПИРУЙТЕ app-nginx.conf /etc/nginx/conf.d. КОПИРОВАТЬ motd /etc/motd ЗАПУСК chmod 0644 /etc/motd; эхо '[ ! -z "$TERM" -a -r /etc/motd ] && cat /etc/motd' >> /etc/bash.bashrc КОПИРУЙТЕ useressiontimout.sh /etc/profile.d/usersessiontimout.sh. ВЫПОЛНИТЬ chmod +x /etc/profile.d/usersessiontimout.sh ВЫСТАВКА 8000 Он использует последнюю версию узла, а образ создается с помощью книжного червя debain, как показано ниже, когда я запускаю контейнер из образа
root@e4f1d0771272:/var/www/app# cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 12 (книжный червь)" NAME="Debian GNU/Linux" ВЕРСИЯ_ID="12" ВЕРСИЯ="12 (книжный червь)" VERSION_CODENAME=книжный червь ID = Debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" Но он показывает версию curl и libcurl, как показано ниже
docker exec e4f1d0771272 dpkg -l | grep локон ii Curl 7.88.1-10+deb12u4 Инструмент командной строки Arm64 для передачи данных с синтаксисом URL ii libcurl4:arm64 7.88.1-10+deb12u4 Arm64 простая в использовании клиентская библиотека передачи URL-адресов (разновидность OpenSSL) Я пытался обновить его до версии (>=8.0), но согласно официальному документу, последняя версия Curl в пакетах Debian, которые использует nginx, — 7.88.1.
Я попытался удалить Curl и libcurl из базового образа, добавив следующее в приведенный выше файл Dockerfile.
RUN apt-get Remove -y --auto-remove Curl libcurl Но когда я создал зависимый образ с использованием базы и запустил контейнер, он продолжал перезапускаться. Мой зависимый файл Dockerfile, как показано ниже:
# Этап 1: Этап сборки ОТ узла: сборка AS 12.3.1-alpine # Используйте разные зеркала ВЫПОЛНИТЕ sed -i -e 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories # Установите необходимые пакеты с помощью менеджера пакетов apk. ЗАПУСК обновления apk && \ apk add --no-cache wget build-base openssl-dev # Устанавливаем исходную папку ARG SOURCE_FOLDER="./" ARG BUILD_VERSION ARG NPM_TOKEN # Создать каталог приложения РАБОЧИЙ ПАРАМЕТР /var/www/app # Источник приложения пакета КОПИРОВАТЬ ${SOURCE_FOLDER} . ЗАПУСК обновления apk && обновление apk && \ apk добавить --no-cache bash git openssh && \ Конфигурация npm установила unsafe-perm true && \ echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > .npmrc && \ npm я -g @myorg/lsc && \ npm я --quiet --cache=./npm-cache # Создаем приложение RUN NODE_OPTIONS=--max_old_space_size=4096 lsc сайт сборки --output-hashing all --buildVersion=$BUILD_VERSION && \ rm -f .npmrc # Этап 2: Заключительный этап ИЗ myorg/docker-base # Копируем только необходимые артефакты со стадии сборки КОПИРОВАТЬ --from=build /var/www/app/dist/ngx-rsc-app /var/www/app # Установите необходимые пакеты с помощью менеджера пакетов apt-get. ЗАПУСТИТЬ обновление apt-get # Вернитесь в каталог приложения РАБОЧИЙ ПАРАМЕТР /var/www/app Это ошибка из журналов контейнера построенного зависимого образа
root@ip-172-32-60-28:~# журналы docker -f 77666b51984a exec /docker-entrypoint.sh: ошибка формата exec exec /docker-entrypoint.sh: ошибка формата exec exec /docker-entrypoint.sh: ошибка формата exec exec /docker-entrypoint.sh: ошибка формата exec Есть идеи, почему выдается эта ошибка и возможное решение? Кроме того, есть ли лучший способ удалить существующие завитки и библиотеки libcurl, а также сохранить работоспособность контейнера? Или обновить его до версии >=8.0?
У меня есть базовое изображение под названием docker-base, в котором есть файл Dockerfile, как показано ниже:
ОТ nginx:latest # Создать каталог приложения РАБОЧИЙ ПАРАМЕТР /var/www/app ЗАПУСК rm /etc/nginx/conf.d/default.conf # Установите зависимости приложения КОПИРУЙТЕ app-nginx.conf /etc/nginx/conf.d. КОПИРОВАТЬ motd /etc/motd ЗАПУСК chmod 0644 /etc/motd; эхо '[ ! -z "$TERM" -a -r /etc/motd ] && cat /etc/motd' >> /etc/bash.bashrc КОПИРУЙТЕ useressiontimout.sh /etc/profile.d/usersessiontimout.sh. ВЫПОЛНИТЬ chmod +x /etc/profile.d/usersessiontimout.sh ВЫСТАВКА 8000 Он использует последнюю версию узла, а образ создается с помощью книжного червя debain, как показано ниже, когда я запускаю контейнер из образа
root@e4f1d0771272:/var/www/app# cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 12 (книжный червь)" NAME="Debian GNU/Linux" ВЕРСИЯ_ID="12" ВЕРСИЯ="12 (книжный червь)" VERSION_CODENAME=книжный червь ID = Debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" Но он показывает версию curl и libcurl, как показано ниже
docker exec e4f1d0771272 dpkg -l | grep локон ii Curl 7.88.1-10+deb12u4 Инструмент командной строки Arm64 для передачи данных с синтаксисом URL ii libcurl4:arm64 7.88.1-10+deb12u4 Arm64 простая в использовании клиентская библиотека передачи URL-адресов (разновидность OpenSSL) Я пытался обновить его до версии (>=8.0), но согласно официальному документу, последняя версия Curl в пакетах Debian, которые использует nginx, — 7.88.1.
Я попытался удалить Curl и libcurl из базового образа, добавив следующее в приведенный выше файл Dockerfile.
RUN apt-get Remove -y --auto-remove Curl libcurl Но когда я создал зависимый образ с использованием базы и запустил контейнер, он продолжал перезапускаться. Мой зависимый файл Dockerfile, как показано ниже:
# Этап 1: Этап сборки ОТ узла: сборка AS 12.3.1-alpine # Используйте разные зеркала ВЫПОЛНИТЕ sed -i -e 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories # Установите необходимые пакеты с помощью менеджера пакетов apk. ЗАПУСК обновления apk && \ apk add --no-cache wget build-base openssl-dev # Устанавливаем исходную папку ARG SOURCE_FOLDER="./" ARG BUILD_VERSION ARG NPM_TOKEN # Создать каталог приложения РАБОЧИЙ ПАРАМЕТР /var/www/app # Источник приложения пакета КОПИРОВАТЬ ${SOURCE_FOLDER} . ЗАПУСК обновления apk && обновление apk && \ apk добавить --no-cache bash git openssh && \ Конфигурация npm установила unsafe-perm true && \ echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > .npmrc && \ npm я -g @myorg/lsc && \ npm я --quiet --cache=./npm-cache # Создаем приложение RUN NODE_OPTIONS=--max_old_space_size=4096 lsc сайт сборки --output-hashing all --buildVersion=$BUILD_VERSION && \ rm -f .npmrc # Этап 2: Заключительный этап ИЗ myorg/docker-base # Копируем только необходимые артефакты со стадии сборки КОПИРОВАТЬ --from=build /var/www/app/dist/ngx-rsc-app /var/www/app # Установите необходимые пакеты с помощью менеджера пакетов apt-get. ЗАПУСТИТЬ обновление apt-get # Вернитесь в каталог приложения РАБОЧИЙ ПАРАМЕТР /var/www/app Это ошибка из журналов контейнера построенного зависимого образа
root@ip-172-32-60-28:~# журналы docker -f 77666b51984a exec /docker-entrypoint.sh: ошибка формата exec exec /docker-entrypoint.sh: ошибка формата exec exec /docker-entrypoint.sh: ошибка формата exec exec /docker-entrypoint.sh: ошибка формата exec Есть идеи, почему выдается эта ошибка и возможное решение? Кроме того, есть ли лучший способ удалить существующие завитки и библиотеки libcurl, а также сохранить работоспособность контейнера? Или обновить его до версии >=8.0?
Мобильная версия