Docker Alpine 镜像是否包含 npm?

Does Docker Alpine images include npm?

我正在设置 docker 容器以将我的前端资产与 npm 和 Webpack 捆绑在一起。为此,我想使用轻量级 Docker 图像。来自 https://hub.docker.com/_/alpine 的图像是否带有 npm?

在我的 docker-compose.yml 文件中

services:
    assets:
        image: alpine:3.9.2
        working_dir: /home/node/app/assets
        volumes:
        - ./src/app/assets:/home/alpine/app/assets/

    command: "npm run bundle"

预计 npm run bundle 到 运行 成功

我得到了 错误:对于资产无法启动服务资产:OCI 运行time create failed: container_linux.go:344: starting container process caused "exec: \"npm\": executable file not found in $PATH": unknown

在 docker 中,Alpine linux 被设计为一个最小的基础镜像,以保持较小的镜像大小并减少它的攻击面。 nodejs(其中包含 npm)等其他软件需要手动安装 using corresponding apk packages,例如 apk add nodejs。可能需要先使用 apk update.

更新软件包

docker 方式

您可以轻松编写 Dockerfile 并将其添加为 RUN 语句。但是首选的方法是在 docker hub for already existing images that fit your needs. In case of npm you'll find a official nodejs image 中搜索,您只需使用目标 nodejs 版本的标签,例如 10-* 以获得最新的 lts。

在这里您可以选择不同的基本图像。以 lts 为例,您可以使用 10-jessie 或您想要的:10-alpine。这只有 24mb,而 10-stretch 需要 346mb 的存储空间。

要使用它,请在 docker-compose.yml 文件中将 image: alpine:3.9.2 更改为 image: node: 10-alpine