Docker Alpine映像是否包含npm?

时间:2019-03-25 14:42:33

标签: docker npm alpine

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

我拥有的docker-compose.yml文件中

npm run bundle

期望import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { HttpClient } from '@angular/common/http'; import { map } from 'rxjs/operators'; // make sure to import the map operator @Injectable({ providedIn: 'root' }) export class RecipiService { jsons: any; url = '/assets/resource.json'; //json:any; constructor(private http:HttpClient) {} getData(){ let data: Observable<any> = this.http.get(this.url); data.subscribe(results =>{ // console.log(this.jsons); return this.jsons = results; }) } getDetails(id){ return this.http.get(this.url) .pipe(map(response) => { return response.find((item) => (item.id === id)); }) } 成功运行

我知道了 错误:资产无法启动服务资产:OCI运行时创建失败:container_linux.go:344:启动容器进程导致“ exec:\“ npm \”:在$ PATH中找不到可执行文件“:未知

1 个答案:

答案 0 :(得分:1)

在docker中,Alpine linux被设计为最小的基本映像,以保持较小的映像大小并减少其攻击面。像nodejs这样的附加软件(包含npm)需要像apk add nodejs这样的手动安装using corresponding apk packages。也许需要先使用apk update更新软件包。

码头工人方式

您可以轻松编写一个Dockerfile并将其添加为RUN语句。但是首选的方法是在docker hub中搜索适合您需要的现有图像。在npm的情况下,您会发现一个official nodejs image,您只需在其中使用目标nodejs版本的标签(例如10-*)来获取最新的lts。

在这里,您可以选择其他基础图像。以lts为例,您可以使用10-jessie或所需的内容:10-alpine。这只有24mb,而10-stretch则需要346mb的存储空间。

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