Skip to content

Docker Compose — High Availability ​

Требования ​

  • Сервер приложения по системным требованиям с Docker Engine и Docker Compose
  • PostgreSQL 15 (поддерживается 14)
  • Valkey 9 (standalone-режим; Sentinel и Cluster не поддерживаются)
  • S3-совместимое хранилище с бакетом, доступным на чтение анонимно
  • Обратный прокси с терминацией SSL (nginx, HAProxy, облачный балансировщик)
  • Два DNS-имени (приложение и MCP-сервер) и сертификаты на оба
  • Учётные данные SMTP-сервера

Примечание

Внешние сервисы должны быть развёрнуты и доступны по сети с сервера приложения.

Шаги по настройке ​

1. Файлы ​

Используется каталог deploy/docker-compose из архива поставки; docker-compose.yaml заменяется на HA-вариант:

yaml
# flip on-premise — High Availability
# PostgreSQL, Valkey, S3-хранилище и обратный прокси развёрнуты отдельно.
# Переменные — из файла .env в каталоге docker-compose.yaml

services:
  flip-file-handlers:
    image: ${FLIP_REGISTRY_IMAGE}/flip-file-handlers:${FLIP_VERSION}
    container_name: flip-file-handlers
    restart: unless-stopped
    volumes:
      - ./config/file-handlers/config.yaml:/flip/config/config.yaml:ro
    networks:
      - flip

  flip-backend:
    image: ${FLIP_REGISTRY_IMAGE}/flip-backend:${FLIP_VERSION}
    container_name: flip-backend
    restart: unless-stopped
    depends_on:
      - flip-file-handlers
    ports:
      - "9000:9000"
    volumes:
      - ./config/backend/config.yaml:/flip/cfg/config.yaml:ro
      # Корневой сертификат PostgreSQL при SSLmode: verify-full
      # - ./config/backend/ca.pem:/flip/certs/ca.pem:ro
    networks:
      - flip

  flip-frontend:
    image: ${FLIP_REGISTRY_IMAGE}/flip-frontend:${FLIP_VERSION}
    container_name: flip-frontend
    restart: unless-stopped
    depends_on:
      - flip-backend
    ports:
      - "8080:80"
    volumes:
      - ./config/frontend/config.js:/usr/share/nginx/html/app/assets/config.js:ro
    networks:
      - flip

  flip-mcp-server:
    image: ${FLIP_REGISTRY_IMAGE}/flip-mcp-server:${FLIP_VERSION}
    container_name: flip-mcp-server
    restart: unless-stopped
    depends_on:
      - flip-backend
    ports:
      - "8090:8090"
    volumes:
      - ./config/mcp-server/config.yaml:/flip/cfg/config.yaml:ro
    networks:
      - flip

networks:
  flip:
    driver: bridge

Скачать docker-compose.ha.yaml

Контейнеры публикуют порты на хосте: backend 9000, frontend 8080, mcp-server 8090. При размещении обратного прокси на том же сервере публикацию портов допускается заменить подключением прокси к сети flip.

2. Переменные окружения ​

В файле .env задаются реестр и версия образов:

ini
FLIP_REGISTRY_IMAGE=cr.yandex/crpbj8irels1kqult74e/onpremise
FLIP_VERSION=v1.2.0

3. Конфигурационные файлы ​

Заполните файлы в каталоге config, указав адреса внешних PostgreSQL, Valkey и S3:

ФайлОписаниеКлючевые поля
config/backend/config.yamlBackendPostgres, RedisClient, S3, Mail, секреты
config/file-handlers/config.yamlFile-handlersS3Config, RedisConfig
config/frontend/config.jsFrontendAPI_URL, S3_URL, WEBSOCKET_URL
config/mcp-server/config.yamlMCP-serverflipApi, RedisClient

Права на файлы

Процессы в контейнерах работают не от root. Конфигурационные файлы должны быть доступны на чтение: chmod -R a+rX config.

PostgreSQL по TLS

Для внешней базы данных используется SSLmode: require или verify-full. Для verify-full корневой сертификат монтируется в контейнер (закомментированная строка в docker-compose.ha.yaml), путь задаётся в Postgres.SSLRootCert.

4. S3-хранилище ​

  • Создайте бакет и разрешите анонимное чтение объектов (политика download / public-read).
  • Загрузите медиа-ресурсы приложения: распакуйте sources/gifs.tar и скопируйте каталог gifs в корень бакета:
bash
tar -xf sources/gifs.tar -C .
aws --endpoint-url https://s3.example.ru s3 cp gifs s3://flip/gifs --recursive

5. Обратный прокси ​

Маршруты и тайм-ауты — по конфигурации nginx: WebSocket /app/api/v1/ws, увеличенный лимит тела запроса /app/api/v1/flip/backup/upload, проксирование S3 /app/s3/, отдельный виртуальный хост MCP-сервера.

6. Доступ к реестру и запуск ​

bash
cat ../../credentials/authorized_key.json | docker login --username json_key --password-stdin cr.yandex
docker compose pull
docker compose up -d
docker compose ps

Приложение доступно по адресу https://example.flip-chart.ru/app. Дальнейшие действия — первый запуск.

Документация flip On-Premise и Cloud