Лучший способ развернуть код nodejs на docker, как автоматически установить node_modules? - PullRequest
0 голосов
/ 14 февраля 2020

Предположим, что следующий простой nodejs docker стартер:

version: '3'
services:
  node:
    container_name: venko_node
    image: node
    restart: always
    volumes:
      - '../src:/usr/src/app/'
    ports:
      - '80:80'
    links:
      - mongo
    working_dir: /usr/src/app
    command: node index.js

Как я могу убедиться, что пакеты node_module установлены при первом запуске?

После добавления Команда npm install до node index.js, но она будет пытаться установить каждый раз, когда я запускаю. Это проблема? Что если я перезагружу сервер и он решит обновить несколько пакетов?

Есть ли лучшее решение? Если нет, то как я могу поставить npm install перед node index.js?

1 Ответ

2 голосов
/ 14 февраля 2020

Чтобы запустить npm install во время сборки образа (а не при запуске контейнера), вы можете создать свой Dockerfile , он может выглядеть следующим образом:

FROM node

ADD . /usr/src/app
WORKDIR /usr/src/app

RUN npm install

CMD node index.js

Затем в конфигурации docker comppose необходимо определить сборку context , которая является каталогом, в котором находится Dockerfile. Например, если docker -композиционная конфигурация и Dockerfile находятся в одном и том же контексте настройки каталога для ., то это должно сработать:

version: '3'
services:
  node:
    build:
      context: '.'
    container_name: venko_node
    restart: always
    ports:
      - '80:80'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...