如何将 gatsby-cli 或 sudo 或其他包添加到像 nodejs 这样的 DDEV-Local 附加服务?
How can I add gatsby-cli or sudo or other packages to a DDEV-Local add-on service like nodejs?
我正在使用单独的 nodejs 容器,如 How to use a separate node container in your ddev setup?,但我真的很想将 gatsby-cli npm 包添加到其中,并且可能还会添加 sudo。我知道如何将自定义 Dockerfile 添加到 Web 服务并执行这些操作,但如何使用自定义服务执行此操作?
您可以执行与 ddev 相同的操作来添加自定义 Docker 文件,并添加 build
节和包含所需文件的 .ddev/<servicename>-build
目录。
所以对于 .ddev/docker-compose.node.yaml 文件:
version: '3.6'
services:
node:
build:
context: "${DDEV_APPROOT}/.ddev/node-build"
dockerfile: "${DDEV_APPROOT}/.ddev/node-build/Dockerfile"
args:
BASE_IMAGE: "node"
image: "node-${DDEV_SITENAME}-built"
user: "node"
restart: "no"
labels:
com.ddev.site-name: ${DDEV_SITENAME}
com.ddev.platform: ddev
com.ddev.app-type: php
com.ddev.approot: $DDEV_APPROOT
volumes:
- "../:/var/www/html:cached"
working_dir: /var/www/html
command: ["tail", "-f", "/dev/null"]
然后 mkdir .ddev/node-build
并创建 .ddev/node-build/Dockerfile 和
ARG BASE_IMAGE
FROM $BASE_IMAGE
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::="--force-confold" --no-install-recommends --no-install-suggests bash sudo
COPY sudoers.d/ddev /etc/sudoers.d
RUN npm install -g gatsby-cli
和.ddev/node-build/sudoers.d/ddev和
ALL ALL=NOPASSWD: ALL
在这种情况下,结果是您通过 npm 安装了 gatsby-cli,还安装了 bash 和无密码 sudo。这只是一个例子,当然还有很多可以做的。
这省去了创建和维护自定义 Docker 图像并将其推送到 hub.docker.com 的麻烦。
我正在使用单独的 nodejs 容器,如 How to use a separate node container in your ddev setup?,但我真的很想将 gatsby-cli npm 包添加到其中,并且可能还会添加 sudo。我知道如何将自定义 Dockerfile 添加到 Web 服务并执行这些操作,但如何使用自定义服务执行此操作?
您可以执行与 ddev 相同的操作来添加自定义 Docker 文件,并添加 build
节和包含所需文件的 .ddev/<servicename>-build
目录。
所以对于 .ddev/docker-compose.node.yaml 文件:
version: '3.6'
services:
node:
build:
context: "${DDEV_APPROOT}/.ddev/node-build"
dockerfile: "${DDEV_APPROOT}/.ddev/node-build/Dockerfile"
args:
BASE_IMAGE: "node"
image: "node-${DDEV_SITENAME}-built"
user: "node"
restart: "no"
labels:
com.ddev.site-name: ${DDEV_SITENAME}
com.ddev.platform: ddev
com.ddev.app-type: php
com.ddev.approot: $DDEV_APPROOT
volumes:
- "../:/var/www/html:cached"
working_dir: /var/www/html
command: ["tail", "-f", "/dev/null"]
然后 mkdir .ddev/node-build
并创建 .ddev/node-build/Dockerfile 和
ARG BASE_IMAGE
FROM $BASE_IMAGE
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::="--force-confold" --no-install-recommends --no-install-suggests bash sudo
COPY sudoers.d/ddev /etc/sudoers.d
RUN npm install -g gatsby-cli
和.ddev/node-build/sudoers.d/ddev和
ALL ALL=NOPASSWD: ALL
在这种情况下,结果是您通过 npm 安装了 gatsby-cli,还安装了 bash 和无密码 sudo。这只是一个例子,当然还有很多可以做的。
这省去了创建和维护自定义 Docker 图像并将其推送到 hub.docker.com 的麻烦。