докер-php-ext-установка застревает на Raspberry Pi (arm32v6)

#php #docker #raspberry-pi

Вопрос:

Я пытаюсь создать php-образ с помощью этого файла Dockerfile:

 FROM php:8.0-fpm-alpine

RUN docker-php-ext-install pdo pdo_mysql
 

Он отлично работает на ПК (amd64), но на Raspberry Pi B (armv6) он застревает, как только доходит до команды, я все еще могу ввести в терминале, так что он не заморожен, он просто не продолжается.
Я тоже пытался php:8.0-fpm , arm32v6/php:7.4-fpm-alpine но безрезультатно.

Есть какие-нибудь зацепки?

Комментарии:

1. попробуйте использовать специфику архитектуры arm hub.docker.com/r/armhf/php

2. @AbhishekDK Я видел эту страницу , но на ней написано The armhf organization is deprecated in favor of the more-specific arm32v7 and arm32v6 organizations , что, как уже упоминалось в вопросе, я уже пробовал более конкретно arm32v6/php:7.4-fpm-alpine . Также все теги на armhf linux/arm64 такие, что я даже не могу их использовать.

3. можете ли вы использовать следующий образ «balenalib/raspberry-pi» , сначала запустите образ и проверьте, установлен ли php, если нет, создайте соответствующий файл dockerfile для установки php

4. hub.docker.com/r/balenalib/raspberry-pi

5. @AbhishekDK Как мне установить docker-php-ext-install скрипт внутри него, так как его нет по умолчанию, как на изображении php?

Ответ №1:

Проблема, по-видимому, заключается в том, что менеджер пакетов не работает для пользователей x86, armv7 и armhf из-за некоторых устаревших пакетов, как указано здесь (Alpine >= 3.13) и >здесь (Debian >= яблочко). docker-php-ext-install Сценарий пытается использовать диспетчер пакетов, что завершается неудачей, но ошибки не отображаются, что сначала делает проблему неясной.

Чтобы решить эту проблему, вы можете либо запустить образ php, использующий Alpine < 3.13 / Debian < bullseye, например php:7.0-fpm-alpine (Alpine 3.7) / php:8.0-fpm-buster (Debian Buster), либо использовать одно из исправлений по ссылкам выше (запустите контейнер с --privileged помощью libseccomp или обновите его вручную).