Назад | Перейти на главную страницу

Подкаталоги для монтирования томов Docker без перезаписи всей цели

У меня такой сценарий.

У меня есть резервная копия, она находится в локальной папке ./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/* Думаю, это решит мою проблему, но не думаю, что это так работает. Надеюсь, я ошибаюсь.

РЕДАКТИРОВАТЬ:

Уродливое решение:

  1. У каждого плагина есть свой собственный файл компоновки. Единственное, что делает этот файл компоновки, - это обрабатывает индивидуальный путь монтирования.
  2. Найдите вхождения: ./plugins/*/docker-compose.yml
  3. Включите эти файлы с docker-compose -f при запуске службы.

Мне бы очень хотелось, чтобы не приходилось обрабатывать файл набора для каждой службы, но это, по крайней мере, достигает цели.