在 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
,因此它们是互斥的。
我想安装一些软件,例如 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
,因此它们是互斥的。