使用docker开发节点的工作stream程

我正在开发一个web应用程序,我需要节点为我的开发环境。

我不想要一个docker生产容器,而是一个开发工具:我需要在docker容器和本地开发机器之间共享文件。 每次更改源文件时,我都不想运行docker。

目前我的dockerfile是:

#React development FROM node:4.1.1-wheezy MAINTAINER xxxxx ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && apt-get -y install sudo locales apt-utils RUN locale-gen es_ES.UTF-8 RUN dpkg-reconfigure locales RUN echo Europe/Madrid | sudo tee /etc/timezone && sudo dpkg-reconfigure --frontend noninteractive tzdata ADD src/package.json /tmp/package.json RUN cd /tmp && npm install RUN mkdir -p /src && cp -a /tmp/node_modules /src/ WORKDIR /src EXPOSE 3000 VOLUME /src 

我需要目录把我所有的源文件(通过数据量共享一个目录)。 我还需要在我的dockerfile中执行npm install,以便在我的sources目录(/ src / node_modules)中获得我的node_modules目录。

但是,当我将主机目录挂载为数据卷时,由于/ src dir已经存在于容器映像中,其内容将被主机上的/ src目录的内容replace,所以我没有/ src / node_modules目录了:

 docker run -it --volumes-from data-container --name node-dev user/dev-node /bin/bash 

我的主机目录没有node_modules目录,因为我通过github获取它,并不同步,因为它是一个相当重的目录。

我的解决scheme是使用ENTRYPOINT指令复制node_modules目录。

docker-entrypoint.sh:

 #!/bin/bash if ! [ -d node_modules ]; then cp -a /tmp/node_modules /src/ fi exec "$@" 

2行添加到dockerfile:

 COPY docker-entrypoint.sh /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] 

免责声明:以下与Docker无关。

我使用SSHFS。 Ubuntu Wiki有一个相当不错的描述:

SSHFS是一个使用SSH来在本地机器上安装远程文件系统的工具; networking对用户来说(大部分)是透明的。

不知道这是否适用于您的情况,但是我的所有主机都运行SSH服务器,所以对我来说这是一个不容易的事情。 win-sshfs项目似乎并没有得到积极的开发,但它仍然运行良好8/10(虽然设置有点奇怪)。 OS X和Linux都通过FUSE对此有更好的支持。