У меня такой сценарий.
У меня есть резервная копия, она находится в локальной папке ./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/
dir, поскольку мы никогда не узнаем явно, какие каталоги находятся внутри него.
Что-то вроде этого:
volumes:
- ./app_backup:/app/main
- ./plugins:/app/main/plugins
Это по сути создает другую проблему, если я сяду ./plugins
тогда весь /app/main/plugins
(полученный из app_backup) перезаписывается!
Так что прямо сейчас я застрял, заставляя разработчиков обновлять файл набора для каждого отдельного плагина, который они разрабатывают. Это проблема, поскольку им постоянно нужно редактировать свой файл композиции!
Пожалуйста, дайте мне знать, возможно ли то, что я пытаюсь сделать, а если нет, то каковы некоторые предлагаемые действия, чтобы упростить этот рабочий процесс. Спасибо!
Если монтирование тома разрешено только для подкаталогов, таких как ./plugins/*
Думаю, это решит мою проблему, но не думаю, что это так работает. Надеюсь, я ошибаюсь.
РЕДАКТИРОВАТЬ:
Уродливое решение:
./plugins/*/docker-compose.yml
docker-compose -f
при запуске службы. Мне бы очень хотелось, чтобы не приходилось обрабатывать файл набора для каждой службы, но это, по крайней мере, достигает цели.