我正在使用Docker,所以这种情况可能看起来很奇怪.但我希望我的整个/ data目录在开发时安装在我的docker容器中.
我的/ data文件夹容器是我的package.json文件,一个app目录和一堆其他的东西.
问题是我希望我的node_modules文件夹不是持久的,只是package.json文件.
我尝试了几件事,但是package.json和npm给了我很难的时间……
>直接挂载package.json文件会破坏npm. npm尝试在保存时重命名文件,这在安装文件时是不可能的.
>挂载父文件夹(/ data)将挂载node_modules文件夹.
>我找不到任何配置选项将node_modules放在/ data,example / dist之外的另一个文件夹中
>将package.json放在/ data / conf中将/ data / conf作为卷安装而不会工作.我找不到任何方法来指定npmrc中的package.json路径.
>将package.json放在/ data / conf中并将其符号链接到/data/package.json不会工作. npm打破符号链接并用文件替换它.
在docker容器内来回传输数据是我现在正在做的事情..有点乏味……我也想要一个干净的解决方案..
在构建Docker镜像时,请执行以下操作:
COPY data/package.json /data/
RUN mkdir /dist/node_modules && ln -s /dist/node_modules /data/node_modules && cd /data && npm install
而对于其他东西(如凉亭,做同样的事情)
COPY data/.bowerrc /data/
COPY data/bower.json /data/
RUN mkdir /dist/vendor && ln -s /dist/vendor /data/vendor && cd /data && bower install --allow-root
最后还是COPY数据/ /数据(因此,当数据发生变化时,您可以使用Dockers缓存而不必进行npm / docker安装.
您还需要创建所需的符号链接并将它们存储在您的git-repo中.它们在外部无效,但会在容器内部发挥作用.
使用此解决方案,您可以安装$PWD / data:/ data而无需在容器外部获取npm / bower“垃圾”.您仍然可以将您的映像构建为服务的独立部署.