在 DDEV 中,我如何安装非 Debian 软件包,如 PECL、npm、pip 等

In DDEV how can I install non-Debian packages like PECL, npm, pip, etc

我想安装一些软件,例如 MySQL CLI tool and the docs.ddev/config.yaml 可以编辑以添加额外的 debian 软件包...但是非 debian 软件包呢?您如何安装通常通过 pip install -U mycli 安装的东西?

[编辑 2020-04-10:这里的方法在 Customizing DDEV-Local images with a custom Dockerfile]

中有更广泛的描述

mysql CLI 工具 (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 在其 github 页面上作为 Debian 软件包分发,因此您可以只使用 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 包, 中的方法是可行的。这是相同的基本思想。

自定义 Docker 文件(或 webimage_extra_packages,当需要时,最棒的一点是包含额外说明的 Docker 图像每个配置只需要构建一次,并非每次启动时。请注意,尽管自定义 Docker 文件会覆盖 webimage_extra_packages,因此它们是互斥的。