无法在 docker 容器中全局正确安装 npm 包
Posted
技术标签:
【中文标题】无法在 docker 容器中全局正确安装 npm 包【英文标题】:Can't properly install npm package globally in docker container 【发布时间】:2021-07-08 20:18:49 【问题描述】:我有一个 vue 项目。我不想将我的环境保留在我的主机上,我更喜欢与 docker 打交道。那么,为什么以这种方式处理节点是如此愚蠢而乏味且难以处理?所以我用节点创建了 Dockerfile,docker-compose.yml 并通过 hepler node:alpine 容器预安装了一个 vue-cli 项目。然后我要让工作作曲。但它不工作!因为我的全局 npm 包只是没有找到。谷歌中没有任何东西可以帮助我。
docker-compose.yml
version: '3'
services:
app:
build: .
container_name: app
ports:
- "8080:8080"
volumes:
- "./:/app"
Dockerfile
FROM node:alpine
RUN npm install -g @vue/cli @vue/cli-service-global
WORKDIR /app/app
ENTRYPOINT ["vue-cli-service", "serve"]
(/app里面还有一个app没关系)
还有错误:
[bxp@manjaro vue]$ docker-compose up -d
Removing app
Recreating 801627fa0179_app ... error
ERROR: for 801627fa0179_app Cannot start service app: OCI runtime create failed: container_linux.go:367: starting container process caused: exec: "vue-cli-service": executable file not found in $PATH: unknown
ERROR: for app Cannot start service app: OCI runtime create failed: container_linux.go:367: starting container process caused: exec: "vue-cli-service": executable file not found in $PATH: unknown
ERROR: Encountered errors while bringing up the project.
【问题讨论】:
【参考方案1】:documentation 似乎表明二进制文件未安装到您的典型位置之一(名义上为/usr/local/bin
)。快速解决方法是将安装位置添加到您的 PATH
变量中。
FROM node:alpine
RUN npm install -g @vue/cli @vue/cli-service-global
WORKDIR /app/app
ENV PATH="$PATH:/usr/local/lib/node_modules/@vue/cli-service-global/node_modules/.bin"
ENTRYPOINT ["vue-cli-service", "serve"]
【讨论】:
以上是关于无法在 docker 容器中全局正确安装 npm 包的主要内容,如果未能解决你的问题,请参考以下文章
NPM 安装在 docker 容器中失败 - npm WARN tar ENOENT:没有这样的文件或目录
sh 将最新版本的Node.js和npm安装到Docker Ubuntu容器中,无论是否需要root访问权限。轻松更新两个appl