@NkDev

Как заставить volumes Docker compose не затирать данные из контейнера?

Пробрасываю том в docker-compose
volumes: 
   - ./src:/var/www/html


Ожидаю что файлы из директории var/www/html попадут на хост в ./src
Но туда не то чтобы ничего не попадает, а еще и затирает все в контейнере по этому адресу.
Я знаю что это нормальное его поведение. Но мне нужно сделать чтобы файлы пробрасывались в обе стороны.
Например если я сделаю вот так:
volumes:
  src:
    driver: local
services:
  owncloud:
    ...
    volumes: 
       - src:/var/www/html
    ...


То все работает именно так как мне нужно. Вот только файлы сохраняются во внутреннем томе docker а я хочу их хранить в файловой системе ОС в папке ./src чтобы я мог их редактировать.

Подскажите, какой есть выход?
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
shurshur
@shurshur
Запись

- src:/var/www/html

создаёт именованный том src в хранилище (docker volume ls). Надо указывать путь к каталогу, например, как относительный: ./src.

В образе по-хорошему ничего не надо заранее класть в этот каталог. Если нужно, чтобы в том попали какие-то данные, то их можно туда, например, распаковать при первом запуске контейнера из заготовленного архива. Но это в принципе считается антипаттерн, докер предполагает, что контейнер - не обёртка для запуска снаружи подсунутого содержимого - а законченное приложение.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Wexter
Ожидаю что файлы из директории var/www/html попадут на хост в ./src

А где в документации описано такое поведение?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы