我现在正在开发一个nodejs项目。 node_modules文件夹中有太多小文件。我想移动基于docker的开发环境,以便node_modules文件夹可以保存在docker镜像中(必要时更新)。同时,我需要应用程序的源文件夹保留在托管环境中。以下是Docker文件,我希望能够工作:
FROM node
MAINTAINER MrCoder
// To simplify the process node_modules is installed and cached
ADD package.json /opt/app/
WORKDIR /opt/app
RUN npm install
// will be mapped to the local app source folder
VOLUME /opt/app
// This is to test whether local node_modules or the folder in the image is used
CMD ls node_modules
显然,当我更改添加本地node_modules文件夹中的任何文件时,它会被列出。
答案 0 :(得分:0)
不,安装卷时无法跳过某些文件。这是一个普通的Linux(以及我所知道的所有其他系统)的限制,而不是与Docker相关的。
但是,解决它很容易:拥有除index.js
之外什么都不做的根级require('./src');
(或其他)。然后由容器提供/opt/app
并将/opt/app/src
作为外部卷装载。
答案 1 :(得分:-1)
你可能会使用绑定装载,即
mkdir -p /node_modules
mount --bind /node_modules /usr/src/app/node_modules
在卷声明之后但在npm安装之前。