向 Docker 添加卷,但排除子文件夹

新手上路,请多包涵

假设我的主机上有一个 Docker 容器和一个文件夹 /hostFolder 。现在,如果我想将此文件夹作为卷添加到 Docker 容器中,那么我可以通过在 中使用 ADD Dockerfile 或将其安装为卷来执行此操作。

到目前为止,一切都很好。

现在 /hostFolder 包含一个子文件夹 /hostFolder/subFolder

我想将 /hostFolder 挂载到Docker容器中(无论是读写还是只读都无所谓,对我都有效),但我不想包含它 /hostFolder/subFolder --- 。我想排除它,并且我还希望 Docker 容器能够对这个子文件夹进行更改,而不会在主机上对其进行更改。

这可能吗?如果是这样,怎么做?

原文由 Golo Roden 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

使用 docker-compose 我可以在本地使用 node_modules,但是在 docker 容器中使用 docker-compose.yml 中的以下语法忽略它

volumes:
   - './angularApp:/opt/app'
   - /opt/app/node_modules/

So everything in ./angularApp is mapped to /opt/app and then I create another mount volume /opt/app/node_modules/ which is now empty directory - even if in my local machine ./angularApp/node_modules 不为空。

原文由 kernix 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果你想让 docker-compose 忽略子目录但持久化,你可以在 docker-compose.yml 中执行以下操作:

 volumes:
  node_modules:
services:
  server:
    volumes:
      - .:/app
      - node_modules:/app/node_modules

这会将您的当前目录挂载为共享卷,但会挂载一个持久的 docker 卷来代替您的本地 node_modules 目录。这类似于@kernix 的答案,但这将允许 node_modulesdocker-compose up 运行之间持续存在,这可能是所需的行为。

原文由 Nate T 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题