Стандартная реализация TarantoolContainer
На странице приводится описание стандартной реализации интерфейса TarantoolContainer.
Диаграмма классов
GenericContainer SELF // some methods Tarantool3Container Tarantool3Container(DockerImageName dockerImageName, String node) withMigrationsPath(Path): Tarantool3Container withEtcdPrefix(String): Tarantool3Container stop(): void stopWithSafeMount(): void mappedAddress(): InetSocketAddress internalAddress(): InetSocketAddress withEtcdAddresses(HttpHost[]): Tarantool3Container withConfigPath(Path): Tarantool3Container node(): String start(): void «interface» TarantoolContainer SELF DEFAULT_TARANTOOL_PORT: int DEFAULT_DATA_DIR: Path restart(long, TimeUnit): void withMigrationsPath(Path): TarantoolContainer<SELF> internalAddress(): InetSocketAddress stopWithSafeMount(): void withConfigPath(Path): TarantoolContainer<SELF> mappedAddress(): InetSocketAddress node(): String GenericContainer SELF // some methods Tarantool3Container Tarantool3Container(DockerImageName dockerImageName, String node) withMigrationsPath(Path): Tarantool3Container withEtcdPrefix(String): Tarantool3Container stop(): void stopWithSafeMount(): void mappedAddress(): InetSocketAddress internalAddress(): InetSocketAddress withEtcdAddresses(HttpHost[]): Tarantool3Container withConfigPath(Path): Tarantool3Container node(): String start(): void «interface» TarantoolContainer SELF DEFAULT_TARANTOOL_PORT: int DEFAULT_DATA_DIR: Path restart(long, TimeUnit): void withMigrationsPath(Path): TarantoolContainer<SELF> internalAddress(): InetSocketAddress stopWithSafeMount(): void withConfigPath(Path): TarantoolContainer<SELF> mappedAddress(): InetSocketAddress node(): String
Класс Tarantool3Container позволяет создать объект контейнера Tarantool 3.x, удовлетворяющий
контракту TarantoolContainer.
Описание реализации
Расположение монтируемых директорий и файлов
Реализация обеспечивает следующее поведение при конфигурировании контейнера:
Tarantool3Container::start() Экземпляр сконфигурирован? да нет return Tarantool3Container.start() Создать временную монтируемую директорию на хосте mountDirectory Смонитровать директории mountDirectory на хосте и /data в контейнере Путь к файлу конфигурации существует и это регулярный файл? да нет Смонитровать путь к файлу конфигураци pathToConfigFile к файлу /data/configFileName в контейнере Оповестить клиента через LOGGER::info(...) , что файл конфигурации скопирован с указанием input и target файлов Оповестить клиента через LOGGER::warn(...) , что файл конфигурации не задан, null, или не существует да Путь к директории c миграциями - регулярный файл? Оповестить клиента через LOGGER::warn(...) , что передан путь к регулярному файлу да Путь к директории с миграциями null? нет Оповестить клиента через LOGGER::warn(...) , что путь к директории с миграциями не существует или null Смонтировать директорию к миграциям migrationsDir к директории /data/migrationsDirName в контейнере Оповестить клиента через LOGGER::info(...) , что директория с миграциями скопирована с указанием input и target директорий Переданы ли адреса к etcd? да нет Использовать конфигурацию из etcd . Задать адреса и префиксы через переменные TT_CONFIG_ETCD_ENDPOINTS , TT_CONFIG_ETCD_PREFIX Использовать конфигурацию, заданную в конфигурационном файле. Задать путь к файлу конфигурации через переменную TT_CONFIG return Tarantool3Container::start() Tarantool3Container::start() Экземпляр сконфигурирован? да нет return Tarantool3Container.start() Создать временную монтируемую директорию на хосте mountDirectory Смонитровать директории mountDirectory на хосте и /data в контейнере Путь к файлу конфигурации существует и это регулярный файл? да нет Смонитровать путь к файлу конфигураци pathToConfigFile к файлу /data/configFileName в контейнере Оповестить клиента через LOGGER::info(...) , что файл конфигурации скопирован с указанием input и target файлов Оповестить клиента через LOGGER::warn(...) , что файл конфигурации не задан, null, или не существует да Путь к директории c миграциями - регулярный файл? Оповестить клиента через LOGGER::warn(...) , что передан путь к регулярному файлу да Путь к директории с миграциями null? нет Оповестить клиента через LOGGER::warn(...) , что путь к директории с миграциями не существует или null Смонтировать директорию к миграциям migrationsDir к директории /data/migrationsDirName в контейнере Оповестить клиента через LOGGER::info(...) , что директория с миграциями скопирована с указанием input и target директорий Переданы ли адреса к etcd? да нет Использовать конфигурацию из etcd . Задать адреса и префиксы через переменные TT_CONFIG_ETCD_ENDPOINTS , TT_CONFIG_ETCD_PREFIX Использовать конфигурацию, заданную в конфигурационном файле. Задать путь к файлу конфигурации через переменную TT_CONFIG return Tarantool3Container::start()
Обеспечение сохранения монтируемых данных
Согласно контракту TarantoolContainer при вызове метода TarantoolContainer::stopWithSafeMount()
и последующего вызова TarantoolContainer::start() монтируемые данные должны сохраниться.
Tarantool3Container реализует этот механизм следующим образом:
Удаление монтируемых директорий происходит только при вызове метода Tarantool3Container::stop().
Конфигурирование контейнера происходит один раз при первом вызове Tarantool3Container::start().
Привязка портов
На этапе конфигурирования контейнера привязка портов не производится. Привязка портов производится
после запуска контейнера Tarantool3Container::start().