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

时间:2020-03-14 04:55:49

标签: ddev

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

1 个答案:

答案 0 :(得分:6)

[编辑2020-04-10:此处的方法在Customizing DDEV-Local images with a custom Dockerfile中进行了更详尽的介绍

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

您知道,大多数流行的Linux工具都具有Debian软件包,并且很容易使用https://ddev.readthedocs.io/en/stable/users/extend/customizing-images/#adding-extra-debian-packages-with-webimage_extra_packages-and-dbimage_extra_packageswebimage_extra_packages: [package1, package2]来安装那些工具

在您的情况下,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软件包,则https://stackoverflow.com/a/60554990/215713中的方法将可行。这是相同的基本思想。

关于自定义Dockerfile(或webimage_extra_packages的好处是,当需要时,包含额外指令的Docker映像仅需针对每个配置构建一次,而无需在每次启动时都进行构建。请注意,自定义Dockerfile会覆盖webimage_extra_packages,因此它们是互斥的。