【问题标题】:Ignoring every `node_modules` in a docker volume忽略 docker 卷中的每个 `node_modules`
【发布时间】: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


【解决方案1】:

重写为“*node_modules”
希望对你有帮助

【讨论】:

  • 在哪里?作为一卷?
  • 使用这个(-./:*node_modules)
  • ERROR: for app Cannot create container for service app: invalid volume spec "*node_modules": invalid volume specification: '*node_modules': invalid mount config for type "volume": invalid mount path: '*node_modules' mount path must be absolute
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-15
  • 1970-01-01
  • 2021-05-18
  • 2018-06-22
  • 1970-01-01
相关资源
最近更新 更多