使用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对此有更好的支持。