[Правка 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
, поэтому они взаимоисключающие.