Как поделиться вложенными папками из докера с именем тома? - PullRequest
0 голосов
/ 02 сентября 2018

Вот пример проекта Symfony:

my_project:
    assets:
    src:
    web:
    package.json
    composer.json

У меня есть apache контейнер и контейнер с webpack , который будет использоваться для просмотра папки assets и создания ее при изменении.

Поскольку оба контейнера нуждаются в доступе к одной и той же файловой системе, скажем, я:

  • Создать именованный том
  • Скопируйте в него my_project, используя эту технику
  • Выполнить некоторые команды composer install и npm install

Когда все будет готово, мне понадобится контейнер apache для совместного использования папки src с хостом и контейнера webpack для совместного использования ресурсов папка с хостом.
Таким образом, каждый раз, когда я изменяю файл в этих папках, я могу видеть результат в своем браузере.

Я видел, что на данный момент невозможно монтировать подкаталоги, так какой же еще путь?
Или я думаю об этом не так?

1 Ответ

0 голосов
/ 03 сентября 2018

Поскольку монтирование подкаталогов именованных томов невозможно , возможно, вы можете попробовать следующее.

На мой взгляд, нескольким контейнерам нужен доступ к одной и той же файловой системе. По докеру том документации :

Помните, что несколько контейнеров могут монтировать один и тот же том, и для некоторых из них он может быть смонтирован для чтения и записи, а для других - только для чтения.

По сути, вы можете создать один том докера и разделить его между всеми вашими контейнерами:

# Initialize the Docker Volume
docker volume create my_project_volume
docker run -v my_project_volume:/my_project --name helper alpine true
docker cp . helper:/my_project
docker rm helper

Если вы хотите, чтобы ваши приложения (например, apache) обращались только к подпапкам вашего тома, вы всегда можете смонтировать том в / (или в любом месте по вашему выбору) и создать символическую ссылку из каталога, к которому ваше приложение получит доступ. в подкаталог тома. Например:

# 1. Run your apache container, mounting the named volume to root dir
docker run -v my_project_volume:/my_project --name my_apache httpd:latest

# 2. Create symlink to named volume subdirectory
docker exec -it my_apache ln -s /usr/local/apache2/htdocs /my_project/src
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...