Назад | Перейти на главную страницу

разработка докеров с использованием Node.js и двоичных модулей node_modules

Я работаю над образом докера для среды разработки для моего приложения Node.js. При запуске образа докера подключается том, так что исходный код моего приложения совместно используется с контейнером с хоста. Проблема, с которой я столкнулся, заключается в том, что, в отличие от большинства проектов Node.js, я держу node_modules / под контролем версий (как рекомендуется здесь http://www.futurealoof.com/posts/nodemodules-in-git.html).

Мне нужно вставить каталог node_modules / в контейнер во время сборки с помощью ADD для сборки двоичных модулей, а затем каким-то образом заставить мое приложение использовать их во время работы контейнера докеров после того, как том был смонтирован.

# Docker official ubuntu 12.04 LTS
FROM ubuntu:12.04

# See: https://launchpad.net/~chris-lea/+archive/node.js/
ENV NODEJS_VERSION 0.10.29-1chl1~precise1

# add updated node.js defacto official repository
RUN apt-get update
RUN apt-get install --yes python-software-properties
RUN add-apt-repository ppa:chris-lea/node.js

# install node.js
RUN apt-get update
RUN apt-get install --yes nodejs=${NODEJS_VERSION}

# install other dependencies via apt...

# copy files to temp directory and rebuild binary node.js modules
ADD ./node_modules /tmp/web/
WORKDIR /tmp/web
RUN npm rebuild

# expose port for app and start it
EXPOSE 5900

WORKDIR /app

# HELP: better way than copying here?
CMD cp -r /tmp/web/node_modules . && ./node_modules/.bin/forever \
  --watch app.js

Вы могли бы так же легко установить свой рабочий каталог в (т.е.) / app, смонтировать свой том в / app внутри контейнера, запустить npm rebuild оттуда, верно?