Запуск кластера через Docker compose¶
В этом руководстве показано, как развернуть Tarantool DB с помощью Docker compose.
Примечание
Данный способ является вспомогательным и используется для тестирования и демонстрации в примерах документации. Для целевого развертывания используйте инсталлятор Ansible Tarantool Enterprise.
Содержание:
Пререквизиты¶
Для выполнения примера требуются:
- установленный Docker-образ Tarantool DB; 
- приложение Docker compose; 
- исходные файлы примера - up_with_docker_compose.- Примечание - Есть два способа получить исходные файлы примера: - Архив с полной документацией Tarantool DB, полученный по почте или скачанный в личном кабинете tarantool.io. Пример архива: - tarantooldb-documentation-1.0.0.tar.gz. Пример- up_with_docker_composeрасположен в таком архиве в директории- ./doc/examples/up_with_docker_compose/.
- Отдельный архив up_with_docker_compose.tar.gz, скачанный c сайта Tarantool. 
 
Запуск стенда¶
Перейдите в директорию примера up_with_docker_compose:
cd ./doc/examples/up_with_docker_compose/
Запустите кластер Tarantool DB:
docker compose up -d --build 
Используемые файлы¶
В руководстве используются следующие файлы примера up_with_docker_compose:
- docker-compose.yml– описание узлов кластера;
- bootstrap/topology.json– топология кластера;
- ./tools/client/bootstrap.sh– скрипт, применяющий топологию кластера;
- bootstrap/config.yml– конфигурация кластера;
- bootstrap/migrations/source– директория, содержащая файлы с описанием миграций;
- ./tools/client/migrate.sh– скрипт, применяющий миграции.
Конфигурация контейнера для узла Tarantool DB¶
Конфигурация контейнера для узла Tarantool DB задается в файле docker-compose.yml:
tarantool-router-msk:
  image: tarantooldb:1x-latest
  networks:
    - tarantooldb_network
  ports:
    - "8081:8081"
    - "3301:3301"
  environment:
    - TARANTOOL_ADVERTISE_URI=tarantool-router-msk:3301
    - TARANTOOL_ALIAS=router-msk
Здесь:
- image– название Docker-образа, используемого для создания контейнера;
- networks– название подсети;
- ports– используемые порты;
- environment– переменные окружения для опций Tarantool и Cartridge:- TARANTOOL_ADVERTISE_URI– адрес и порт, на котором узел доступен в кластере;
- TARANTOOL_ALIAS– название узла кластера.
 - Полный список опций доступен в документации к модулю cartridge.argparse и в описании Docker-образа Tarantool DB. 
Контейнер user-host¶
В файле docker-compose.yml есть специальный контейнер user-host.
Он выступает в роли компьютера разработчика, с которого выполняются:
- Настройка топологии кластера и первоначальный запуск (bootstrap) модуля шардирования vshard. 
- Загрузка клиентского кода в кластер: описание спейсов и функций (миграции) 
В примере конфигурация контейнера user-host выглядит так:
user-host:
  image: tarantooldb:1x-latest
  networks:
    - tarantooldb_network
  environment:
    - TARANTOOLDB_TARGET_URI=tarantool-router-msk:8081
    - BOOTSTRAP_FAILOVER=1
    - TARANTOOLDB_BOOTSTRAP_TIMEOUT=60
  working_dir: /usr/share/tarantool/tarantooldb/tools/client/
  command: /bin/sh -c "./bootstrap.sh && ./health_check.sh && ./migrate.sh"
  depends_on:
    - tarantool-router-msk
    - tarantool-router-spb
    - tarantool-storage-1-msk
    - tarantool-storage-1-spb
    - tarantool-storage-2-msk
    - tarantool-storage-2-spb
    - etcd1
    - etcd2
    - etcd3
  volumes:
    - ./bootstrap/:/bootstrap/
Здесь:
- image– название Docker-образа, используемого для создания контейнера; Используется как источник скриптов- bootstrap.sh,- health_check.shи- migrate.sh. Предполагается, что в реальных условиях скрипты будут загружены на компьютер разработчика из личного кабинета tarantool.io.
- networks– название подсети;
- environment– переменные окружения:- TARANTOOLDB_TARGET_URI– адрес, по которому доступны API-команды кластера. Используется скриптами- bootstrap.sh,- health_check.shи- migrate.sh;
- BOOTSTRAP_FAILOVER– первоначальный запуск механизма восстановления после сбоев (failover);
- TARANTOOLDB_BOOTSTRAP_TIMEOUT– время ожидания первоначального запуска (bootstrap);
 
- working_dir– директория, в которой лежат скрипты;
- command– запуск скриптов- bootstrap.sh,- health_check.shи- migrate.sh;
- depends_on– секция определяет, что контейнер- user-hostзапускается только после запуска всех остальных узлов кластера;
- volumes– передача в контейнер директории с настройками кластера и пользовательской логикой, чтобы они стали доступны для скриптов.