Как в DDEV установить пакеты, отличные от Debian, такие как PECL, npm, pip и т. Д.

Я хочу установить некоторое программное обеспечение, например инструмент командной строки MySQL и в документации говорится, что .ddev/config.yaml можно отредактировать для добавления дополнительных пакетов debian ... но как насчет не-debian пакеты? Как установить то, что обычно устанавливается через pip install -U mycli?


person alec    schedule 14.03.2020    source источник


Ответы (1)


[Изменить 2020-04-10: подход здесь более подробно описан в Настройка локальных образов DDEV с помощью настраиваемого файла Dockerfile]

Инструмент командной строки mysql (mysql) уже установлен как в веб-контейнерах ddev, так и в контейнерах db, но вам определенно понравится mycli.

Как вы знаете, у большинства популярных инструментов Linux есть пакеты Debian, и их легко установить, используя webimage_extra_packages: [package1, package2] per https://ddev.readthedocs.io/en/stable/users/extend/customizing-images/#adding.-extra-debian-packages-with-webimage_extra_packages-and-dbimage_extra_packages

В вашем случае mycli распространяется как пакет Debian на его странице на github, поэтому вы можете просто использовать webimage_extra_packages: [mycli], и это лучший способ его установить.

Но для автоматической установки других инструментов при построении контейнера (которые используют npm или pip3, pecl / pear или что-то еще) вы должны использовать custom Dockerfile. Мы будем использовать ваш пример mycli (как будто у него нет пакета Debian).

В .ddev / web-build / Dockerfile вам нужно что-то вроде этого, на основе .ddev / web-build / Dockerfile.example, который сначала устанавливает pip3, а затем использует его для установки mycli:

ARG BASE_IMAGE=drud/ddev-webserver:v1.13.1
FROM $BASE_IMAGE
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::="--force-confnew" --no-install-recommends --no-install-suggests python3-pip python3-setuptools
RUN pip3 install mycli

Конечно, для пакетов npm мы могли бы взять пример из Dockerfile.example, RUN npm install --global gulp-cli. И даже можно установить gcc или g ++ (так же, как мы установили pip3) и собрать пакет из исходников.

Если вы хотите установить пакет PECL / Pear, подход в https://stackoverflow.com/a/60554990/215713 Будет работать. Это та же основная идея.

В настраиваемом файле Dockerfile (или webimage_extra_packages, когда он нужен, замечательно то, что образ Docker, содержащий дополнительные инструкции, нужно создавать только один раз для каждой конфигурации, а не при каждом запуске. Обратите внимание, что пользовательский файл Docker имеет приоритет над webimage_extra_packages, поэтому они ' являются взаимоисключающими.

person rfay    schedule 14.03.2020
comment
Спасибо, Рэнди! Это действительно здорово, потому что пакеты debian очень часто устарели (а иногда и очень устарели), и приятно видеть примеры, устанавливающие что-то с помощью pip! - person alec; 14.03.2020