Как объединить папку хоста с папкой контейнера в Docker?
У меня Викимедиа работает на Докере. Расширения Викимедиа проживают в extensions/
папка, которая изначально содержит встроенные расширения (одно расширение = одна подпапка)
Теперь я хочу добавить новые расширения. Однако я не предпочитаю вариант изменения Dockerfile или создания нового коммита в существующем контейнере.
Можно ли создать папку на хосте (например, /home/admin/wikimedia/extensions/
), который должен быть объединен (не перезаписан) с extension
папка в контейнере? Поэтому, когда я хочу установить новое расширение, я просто копирую папку расширения на хост /home/admin/wikimedia/extensions/
1 ответ
Вы можете смонтировать том со своего хоста в другое место, отличное от папки расширений, а затем в своем сценарии запуска вы можете скопировать содержимое в каталог контейнера. Вам нужно будет перестроить свой хост один раз.
Например:
Dockerfile:
RUN cp startup-script /usr/local/bin/startup-script
CMD /usr/local/bin/startup-script
startup-script:
#!/bin/bash
cp /mnt/extensions /path/to/wikipedia/extensions
/path/to/old-startup-script $@
docker run -d -v /home/admin/wikimedia/extensions:/mnt/extensions wikipedia
Это один из способов обойти эту проблему, другой способ состоит в том, чтобы поддерживать отдельный контейнер данных для расширений, затем вы смонтируете его и сохраните его вне контейнера википедии. Это должно было бы иметь все расширения в нем.
Вы можете начать один так:
docker run -d -v /home/admin/wikimedia/extensions:/path/to/wikipedia/extensions --name extensions busybox tail -f /dev/null
docker run -d --volumes-from extensions wikipedia