我正在开发使用$('.myRedClass').addClass('redClass-margin');
服务器的NodeJS应用程序。webpack
服务器配置为处理自动文件重新加载。我希望将其作为卷挂载,这样每次更改代码时都无需重建映像。我希望Webpack
文件夹在图像中可用,这样我每次启动容器时都不必获取模块。
实际上,源代码和node_modules
应该处于同一层次结构级别。但问题是当我执行源代码的卷装载时,node_modules
(因为它是图像的一部分)将会丢失,因为将使用卷装入路径。
有什么方法可以让这件事有效吗?
答案 0 :(得分:1)
我很清楚这个问题!
当您挂载卷时,它会删除容器内安装的目录中的文件(从技术上讲,它不会删除它们,但出于我们的目的,它会删除它们)。这是因为文件是BUILD的一部分而不是RUN的一部分。
有3个修复程序:
1 - 不是在构建时执行npm install
,而是在运行时执行此操作 - 例如执行docker run
命令时。在运行时在已安装目录中创建的容器文件将可从主机获得。
ENTRYPOINT npm install (something like that)
2 - 在构建期间将文件复制到其他位置(例如/ temp / node_modules),然后在运行时将其复制回来
ENTRYPOINT scriptToCopyFilesBackIntoNodeModules.sh
如果您需要从主机进行访问,则应使用前两个中的任何一个。如果您需要从另一个容器访问,请使用volumes_from
- 这只是在没有任何上述解决方法的情况下工作。
container1:
volumes: /node_modules
container2:
volumes_from: container1
就是这样 - 上面的语法是docker-compose语法。