В DDEV, как я могу установить не-Debian пакеты, такие как PECL, npm, pip и т. Д. - PullRequest
0 голосов
/ 14 марта 2020

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

1 Ответ

2 голосов
/ 14 марта 2020

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

Инструмент CLI mysql (mysql) уже установлен в контейнерах ddev web и 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 page, так что вы можете просто использовать webimage_extra_packages: [mycli], и это лучший способ установить его.

Но для автоматической установки других инструментов при сборке контейнера (которые используют npm или pip3 или pecl / pear или что-либо еще) вы должны использовать пользовательский 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. И даже возможно установить g cc или g ++ (как мы установили pip3) и собрать пакет из исходного кода.

Если вы хотите установить пакет PECL / Pear, подход в { ссылка } будет работать. Это та же самая основная идея.

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

...