我有以下情况。
我有一个备份摘录,它存在于本地文件夹中./app_backup
。其中的示例目录结构如下:
./app_backup/plugins/plugin1
./app_backup/plugins/plugin2
./app_backup/plugins/plugin3
./app_backup/src/a
./app_backup/src/b
./app_backup/assets/mine.jpg
./app_backup/.../lots/more/...
我还有一个本地目录./plugins
,用于存放我正在开发的本地插件。它看起来像这样:
./plugins/pluginX
./plugins/pluginY
整个结构需要安装到容器中。我通过 compose 进行此操作。
(如果存在命名冲突,则中的文件夹./plugins
应优先于备份中的文件夹)
我需要将它们全部安装到容器启动后的主插件目录中,路径将是这样的容器内的预期结果:
/app/main/plugins/plugin1
/app/main/plugins/plugin2
/app/main/plugins/plugin3
/app/main/plugins/pluginX
/app/main/plugins/pluginY
当然,容器的撰写文件可以简单地执行以下操作:
volumes:
- ./app_backup/:/app/main/
- ./plugins/pluginX:/app/main/plugins/pluginX
- ./plugins/pluginY:/app/main/plugins/pluginY
然而,我并不总是知道本地插件的数量或名称,它可能是动态的所以我无法在撰写文件中明确定义每个插件子目录
例如,一个开发人员可能./plugins/pluginX
有 10 个不同名称的,例如./plugins/pluginABC
。
因此我只需要挂载整个./plugins/
目录,因为我们永远不会明确知道其中有哪些目录。
像这样:
volumes:
- ./app_backup:/app/main
- ./plugins:/app/main/plugins
这必然会引发另一个问题,如果我安装,./plugins
那么整个/app/main/plugins
(来自 app_backup)将被覆盖!
所以现在我只能让开发人员更新他们开发的每个插件的 Compose 文件。这是一个痛点,因为他们需要不断编辑 Compose 文件!
请告诉我我尝试做的事情是否可行,如果不行,有什么建议可以简化此工作流程。谢谢!
如果卷安装允许“仅子目录”,例如./plugins/*
我认为它可以解决我的问题,但我认为它不能那样工作。我希望我错了。
编辑:
糟糕的解决方法:
- 每个插件都有自己的 Compose 文件。此 Compose 文件的唯一作用是处理单独的挂载路径。
- 查找以下项:
./plugins/*/docker-compose.yml
docker-compose -f
在启动服务时包含这些文件。
我真的很不想为每项服务处理一个组合文件,但这至少实现了目标。