Установка и запуск бэкенда
С помощью Docker
Требования
Процесс установки
Docker загрузит образ бэкенда Horizon и Postgres, и запустит их.
Опции могут быть установлены через файл .env или раздел environment в docker-compose.yml
docker-compose.yml
services: db: image: postgres:17 restart: unless-stopped environment: POSTGRES_DB: horizon POSTGRES_USER: horizon POSTGRES_PASSWORD: 123UsedForTestOnly POSTGRES_INITDB_ARGS: --encoding=UTF-8 --lc-collate=C --lc-ctype=C ports: - 5432:5432 volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: pg_isready start_period: 5s interval: 30s timeout: 5s retries: 3
backend: image: mtsrus/horizon-backend:${VERSION:-latest} restart: unless-stopped env_file: .env.docker environment: # list here usernames which should be assigned SUPERADMIN role on application start HORIZON__ENTRYPOINT__ADMIN_USERS: admin # PROMETHEUS_MULTIPROC_DIR is required for multiple workers, see: # https://prometheus.github.io/client_python/multiprocess/ PROMETHEUS_MULTIPROC_DIR: /tmp/prometheus-metrics # tmpfs dir is cleaned up each container restart tmpfs: - /tmp/prometheus-metrics:mode=1777 ports: - 8000:8000 depends_on: db: condition: service_healthy
volumes: postgres_data:
.env.docker
See Backend -> Configuration documentation
HORIZON__DATABASE__URL=postgresql+asyncpg://horizon:123UsedForTestOnly@db:5432/horizon HORIZON__AUTH__PROVIDER=horizon.backend.providers.auth.dummy.DummyAuthProvider HORIZON__AUTH__ACCESS_TOKEN__SECRET_KEY=234UsedForTestOnly HORIZON__AUTH__LDAP__URL=ldap://ldap:389 HORIZON__AUTH__LDAP__BASE_DN=ou=people,dc=ldapmock,dc=local HORIZON__AUTH__LDAP__LOOKUP__CREDENTIALS__USER=uid=adminuser1,ou=people,dc=ldapmock,dc=local HORIZON__AUTH__LDAP__LOOKUP__CREDENTIALS__PASSWORD=password HORIZON__SERVER__DEBUG=true HORIZON__SERVER__LOGGING__PRESET=colored HORIZON_TEST_SERVER_URL=http://backend:8000 HORIZON__SERVER__CORS__ENABLED=True HORIZON__SERVER__CORS__ALLOW_ORIGINS=["http://localhost:3000"] HORIZON__SERVER__CORS__ALLOW_CREDENTIALS=True HORIZON__SERVER__CORS__ALLOW_METHODS=[""] HORIZON__SERVER__CORS__ALLOW_HEADERS=[""] HORIZON__SERVER__CORS__EXPOSE_HEADERS=["X-Request-ID","Location","Access-Control-Allow-Credentials"]
После запуска и готовности контейнера, откройте http://localhost:8000/docs.
Пользователям, перечисленным в переменной среды HORIZON__ENTRYPOINT__ADMIN_USERS, будет автоматически присвоена роль SUPERADMIN.
Без Docker
Требования без Docker
- Python 3.7 или выше
- Pydantic 2.x
libldap2-dev,libsasl2-dev,libkrb5-dev(для LDAP провайдера аутентификации)- Экземпляр реляционной базы данных, например Postgres
Процесс установки без Docker
Установите пакет data-horizon со следующими дополнительными зависимостями:
$ pip install data-horizon[backend,postgres,ldap]
...
Доступные дополнения:
backend- основные требования бэкенда, такие как FastAPI, SQLAlchemy и так далее.postgres- требования, необходимые для использования Postgres в качестве хранилища данных бэкенда.ldap- требования, используемые LDAP провайдером аутентификации.
ПРИМЕЧАНИЕ
Для пользователей macOS требуется дополнительный шаг. Вам необходимо установить библиотеку Python "bonsai" из исходного кода. Эта установка необходима для работы с LDAP.
Запуск базы данных
Запустите экземпляр Postgres где-нибудь и настройте URL базы данных, используя переменные среды:
HORIZON__DATABASE__URL=postgresql+asyncpg://user:password@postgres-host:5432/database_name
Вы можете использовать практически любую базу данных, поддерживаемую SQLAlchemy, но единственная, которую мы действительно тестировали, это Postgres.
См. Настройки базы данных для дополнительных опций.
Запуск миграций
Для применения миграций (изменений структуры базы данных) вам нужно выполнить следующую команду:
$ python -m horizon.backend.db.migrations upgrade head
...
Это тонкая обертка вокруг CLI alembic, опции и команды точно такие же.
Запуск миграций
Эту команду следует выполнять после каждого обновления до новой версии Horizon.
Запуск бэкенда
Для запуска сервера бэкенда вам нужно выполнить следующую команду:
$ python -m horizon.backend --host 0.0.0.0 --port 8000
...
Это тонкая обертка вокруг CLI uvicorn, опции и команды точно такие же.
После запуска и готовности сервера, откройте http://localhost:8000/docs.
Добавление администраторов
Чтобы повысить определенных пользователей до роли SUPERADMIN, запустите следующий скрипт:
$ python -m horizon.backend.scripts.manage_admins add admin1 admin2
...
См. документацию Скрипты.