Как объединить папку хоста с папкой контейнера в 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
Другие вопросы по тегам