node_modules отсутствуют даже после установки npm в Docker-контейнере - PullRequest
3 голосов
/ 05 апреля 2019

Используемый файл Docker:

FROM node:8-alpine

WORKDIR /usr/src/app
COPY . .
RUN npm install

CMD ["npm", "run", "serve"]

EXPOSE 8080

И файл docker-compose.yml:

version: '3'

services:
    app:
        container_name: app
        restart: always
        build:
            context: ./app
            dockerfile: Dockerfile
        ports:
            - "8080:8080"
        volumes:
            - ./app:/usr/src/app
            - ./logs:/logs

Структура папок следующая:

project/
|-- docker-compose.yml
|-- logs/
|-- app/
    |-- Dockerfile
    |-- package.json

При запуске docker-compose up --build из проекта /, шаг npm install выводит примерно через одну минуту следующее:

added 1684 packages from 1297 contributors and audited 36429 packages in 56.23s
found 0 vulnerabilities

Однако, на шаге npm run serve вывод в основном состоит в том, что нет npmМодуль может быть найден, и среди прочего, эта строка:

npm WARN Локальный package.json существует, но отсутствует node_modules, вы хотели установить?

Какприходит npm install на самом деле и определенно выполняется, но npm жалуется, что node_modules не может быть найдено?

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

У меня была такая же проблема, и я решил ее, просто следуя этой инструкции .Добавьте одну строку кода - /usr/src/app/node_modules в файл docker-compose.yml в томах:

volumes:
  - ${PWD-.}/name_of_your_app:/usr/src/app
  - /usr/src/app/node_modules
0 голосов
/ 05 апреля 2019

Обновление: я только что использовал только папку ./app/src в качестве тома вместо ./app.

Таким образом, /app/node_modules не переопределяется томом хоста.

version: '3'

services:
    app:
        container_name: app
        restart: always
        build:
            context: ./app
            dockerfile: Dockerfile-dev
        ports:
            - "8080:8080"
        volumes:
            - ./app/src:/usr/src/app/src # <---- this
            - ./logs:/logs
...