Ошибка установки Npm при сборке контейнера Docker - PullRequest
0 голосов
/ 30 октября 2018

Я создал очень простой файл Docker для моего веб-приложения nodejs:

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 голосов
/ 30 октября 2018

Вам вообще не нужно изображение mysql в вашем Dockerfile; в идеале ваш контейнер приложения (essblockexplorer) обращается к контейнеру db (db) через клиент NodeJS. Все, что вам нужно сделать, это;

  1. Удалите строку FROM mysql:latest из вашего Dockerfile.
  2. Доступ к базе данных MySQL через клиент NodeJS с использованием (db) в качестве имени хоста (оно автоматически загружается как псевдоним в ваш контейнер).
...