【发布时间】:2019-08-25 20:59:23
【问题描述】:
我试图忽略每个工作区/子文件夹中的每个 node_modules。
事实是:不可能(真的)忽略卷中的文件夹名称。
所以有这个技巧:
volumes:
- ./:/app
- /app/node_modules
它适用于只有一个 node_modules 的应用。但是如果下面的目录树中有多个类似的呢?
project
| node_modules/
| docker-compose.yml
| Dockerfile
|
└─── workspaces/
| └─── client/
| | node_modules/
| |
| └─── server/
| | node_modules/
我真的需要将每个node_modules 作为一个卷安装在我的docker-compose.yml 中吗?
volumes:
- ./:/app
- /app/node_modules
- /app/workspaces/client/node_modules
- /app/workspaces/server/node_modules
或者还有其他更好的方法吗?
【问题讨论】:
-
我认为你可以将
node_modules添加到dockerignore文件中 -
@DominikMatis 根据this post,您不能忽略卷内的内容,因为它会在构建后共享给容器。正如我所说,有一个解决方案,但是当有很多
node_modules需要忽略时,它实际上并不可行。 -
我一直在想
**/node_modules,但我在手机上,所以无法测试很抱歉 -
Dominik 的解决方案可能有效,c.f.此回复:stackoverflow.com/a/56511833/1006854
-
@Mehdi 也许我遗漏了一些东西,但是,如果在主机的
node_modules文件夹之一中有一个文件(我们称之为file.txt),它应该在构建容器时工作,但是容器启动后,卷将共享主机的node_modules到容器中,其中包含file.txt。试一试,然后运行 ls和docker exec,您将看到该文件。但同样,也许我错过了一些东西。
标签: javascript node.js docker docker-compose