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

ale*_*lec 2 ddev

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

rfa*_*fay 7

[编辑 2020-04-10:此处的方法在使用自定义 Dockerfile 自定义 DDEV-Local 映像中更广泛地编写]

mysql CLI 工具 (mysql) 已经安装在 ddev web 和 db 容器中,但您肯定喜欢mycli

如你所知,最流行的Linux工具有Debian软件包,并且很容易使用这些安装webimage_extra_packages: [package1, package2]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 或其他工具),您将使用自定义 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
Run Code Online (Sandbox Code Playgroud)

当然,对于 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 映像只需在每个配置中构建一次,而不是在每次启动时构建。请注意,尽管自定义 Dockerfile 会覆盖webimage_extra_packages,因此它们是相互的独家的。