Você poderia facilmente definir seu diretório de trabalho para (ou seja) / app, montar seu volume em / app dentro do contêiner, executar a reconstrução de npm de lá, certo?
Estou trabalhando em uma imagem do docker para um ambiente de desenvolvimento para meu aplicativo Node.js. Ao executar a imagem do docker, um volume é montado para que o código-fonte do meu aplicativo seja compartilhado com o contêiner do host. O problema que estou enfrentando é que, ao contrário da maioria dos projetos do Node.js, eu mantenho o node_modules / sob controle de versão (como recomendado aqui link ).
Eu preciso injetar o diretório node_modules / no contêiner durante a construção usando ADD para construir os módulos binários e, de alguma forma, usar meu aplicativo para usá-los durante a execução do contêiner docker, após o volume ter sido montado.
# 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
Você poderia facilmente definir seu diretório de trabalho para (ou seja) / app, montar seu volume em / app dentro do contêiner, executar a reconstrução de npm de lá, certo?
Tags docker development node.js