Я хочу установить некоторое программное обеспечение, например инструмент командной строки MySQL и в документации говорится, что .ddev/config.yaml
можно отредактировать для добавления дополнительных пакетов debian ... но как насчет не-debian пакеты? Как установить то, что обычно устанавливается через pip install -U mycli
?
Как в DDEV установить пакеты, отличные от Debian, такие как PECL, npm, pip и т. Д.
Ответы (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
, поэтому они ' являются взаимоисключающими.