В документации говорится, что тома можно "мигрировать", что я предположение означает, что я должен иметь возможность перемещать том с одного хоста на другой хост. (Более чем рад быть исправленным в этом вопросе.) Однако на той же странице документации нет информации о том, как это сделать.
Покопавшись в SO, я нашел старый вопрос ( около 2015 года), в котором говорится, что это невозможно, но, учитывая, что прошло 2 года, я решил спросить еще раз.
На случай, если это поможет, я разрабатываю приложение Flask, которое использует [TinyDB] + локальный диск в качестве хранилища данных — я решил, что мне не нужно ничего более необычного, чем это; это проект, сделанный для обучения на данный момент, поэтому я решил пойти очень легко. Структура проекта такая:
/project_directory
|- /app
|- __init__.py
|- ...
|- run.py # assumes `data/databases/ and data/files/` are present
|- Dockerfile
|- data/
|- databases/
|- db1.json
|- db2.json
|- files/
|- file1.pdf
|- file2.pdf
У меня есть папка data/*
внутри моих .dockerignore
и .gitignore
, так что они не находятся под контролем версий и игнорируются Docker при создании образов.
При разработке приложения я также пытаюсь работать с записями базы данных и PDF-файлами, которые максимально приближены к реальному миру, поэтому я заполнил приложение очень небольшим подмножеством реальных данных, которые хранятся на смонтированном томе. непосредственно в data/
при создании экземпляра контейнера Docker.
Что я хочу сделать, так это развернуть контейнер на удаленном хосте, но на удаленном хосте должны быть заполнены начальные данные (в идеале это должен быть том, который я использовал локально для максимального удобства); позже, когда на удаленный хост будет добавлено больше данных, я хотел бы иметь возможность вернуть их обратно, чтобы во время разработки я работал с актуальными данными, которые ввели мои конечные пользователи.
Оглядываясь вокруг, я думаю, что "хакерский" способ - это просто использовать rsync
, что может сработать очень хорошо. Однако, если есть решение, которое мне не хватает, я был бы очень признателен за руководство!