docker - 无法在节点 docker 镜像中安装 npm

标签 docker docker-compose

FROM node:latest

WORKDIR /frontend/

ENV PATH /frontend/node_modules/.bin:$PATH

COPY package.json /frontend/package.json
COPY . /frontend/
RUN npm install --silent
RUN npm install react-scripts@3.0.1 -g --silent

CMD ["npm", "run", "start"]

这是我的Dockerfile对于我的项目的前端。

我把它作为我的 docker-compose.yml 中的一项服务文件,当我运行 docker-compose up -d --build ,它给了我
Step 6/8 : RUN npm install --silent
 ---> Running in 09a4f59a96fa
ERROR: Service 'frontend' failed to build: The command '/bin/sh -c npm install --silent' returned a non-zero code: 1

我的 docker-compose 文件如下所示,供您引用:
# Docker Compose
version: '3.7'

services:
  frontend:
    container_name: frontend
    build:
      context: frontend
      dockerfile: Dockerfile
    ports:
      - "3000:3000"
    volumes:
      - '.:/frontend'
      - '/frontend/node_modules'
  backend:
    build: ./backend
    ports:
      - "5000:5000"
    volumes:
       - .:/code

提前致谢

编辑:构建后前端出错

enter image description here

最佳答案

对于 docker-compose,我认为应该是这样的

- ./frontend/:/frontend'

因为构建上下文是前端。

其次,如果您使用卷,那么为什么要在 Dockerfile 中安装和复制代码?如果您使用的是绑定(bind)卷,请从 Dockerfile 中删除它们,因为它们将被主机代码覆盖。
COPY package.json /frontend/package.json
COPY . /frontend/

关于docker - 无法在节点 docker 镜像中安装 npm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58195744/

相关文章:

docker - 如何显示 docker 容器的运行命令

javascript - 为什么 docker-compose 中的 Web 应用程序无法连接到同一组合中的另一个容器?

ruby - 如何将 nginx 设置为 Ruby 应用程序的反向代理(全部在 Docker 中运行)

git - 带有 git 子模块的 Docker 项目结构

docker - 如何通过 docker-compose 将变量传递给 Dockerfile

nginx - 让我们加密 502 坏网关 docker

mongodb - 如何在kubernetes中包含带有mongo图像的数据

node.js - 通过 docker 使用 nodejs 服务静态 react 应用程序

bash - Dockerfile从中运行bash脚本时引发错误

php - Docker - 如何在 docker-compose.yml 中设置 Apache + PHP