在Docker容器构建期间Npm安装错误

时间:2018-10-30 18:07:07

标签: node.js docker npm docker-compose

我为自己的nodejs Web应用程序创建了一个非常简单的docker文件:

FROM node:8.11.4
FROM mysql:latest

WORKDIR /ess-explorer
COPY . .

RUN npm install

RUN cd config && cp config.json.example config.json && cp database.json.example database.json && cd ../

RUN npm run migrate

EXPOSE 3000
CMD ["npm", "dev"]

还有docker.yml

version: '3'
services:

  essblockexplorer:
    container_name: ess-explorer
    build: .
    depends_on:
      - db
    privileged: true
    ports:
       - 3000:3000
       - 3010:3010

  db:
    container_name: mysql
    image: mysql
    restart: always
    volumes:
       - db-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: '123'

volumes:
  db-data:

命令docker-compose -f docker.yml build发出通知后,我出现了一个错误 Step 5/9 : RUN npm install ---> Running in d3644d792807 /bin/sh: 1: npm: not found ERROR: Service 'essblockexplorer' failed to build: The command '/bin/sh -c npm install' returned a non-zero code: 127 我究竟做错了什么?我发现了类似的问题,但没有找到解决此问题的真正方法

1 个答案:

答案 0 :(得分:2)

您根本不需要在Dockerfile中使用mysql映像;理想情况下,您的应用容器(essblockexplorer)通过NodeJS客户端访问数据库容器(db)。您所需要做的就是;

  1. 从Dockerfile中删除FROM mysql:latest行。
  2. 使用(db作为主机名通过NodeJS客户端访问MySQL数据库(该主机名将自动作为别名加载到您的容器中)。