Skip to content

REST API Сервер

Сервер SyncMaster предоставляет простой REST API для доступа к сущностям, хранящимся в database. Реализован с использованием FastAPI.

Установка и запуск

С использованием docker

  • Установите Docker

  • Установите docker-compose

  • Выполните следующую команду:

$ docker compose --profile server up -d --wait
...

docker-compose загрузит все необходимые образы, создаст контейнеры, а затем запустит сервер.

Параметры можно установить через файл .env или раздел environment в docker-compose.yml

docker-compose.yml

server: image: mtsrus/syncmaster-server:${VERSION:-develop} restart: unless-stopped build: dockerfile: docker/Dockerfile.server context: . target: prod ports: - 8000:8000 environment: # 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 volumes: - ./config.docker.yml:/app/config.yml depends_on: db: condition: service_healthy db-migrations: condition: service_completed_successfully rabbitmq: condition: service_healthy profiles: - server - frontend

config.yml

database: url: postgresql+asyncpg://syncmaster:changeme@localhost:5432/syncmaster

broker: url: amqp://guest:guest@localhost:5672

encryption: # Encrypt / Decrypt credentials data using this Fernet key. # !!! GENERATE YOUR OWN COPY FOR PRODUCTION USAGE !!! secret_key: UBgPTioFrtH2unlC4XFDiGf5sYfzbdSf_VgiUSaQc94=

auth: # Dummy Auth provider: syncmaster.server.providers.auth.dummy_provider.DummyAuthProvider access_token: secret_key: generate_another_random_string

# Keycloak Auth # provider: syncmaster.server.providers.auth.keycloak_provider.KeycloakAuthProvider # keycloak: # api_url: http://localhost:8080/auth # realm_name: manually_created # client_id: manually_created # client_secret: generated_by_keycloak # ui_auth_callback_url: http://localhost:3000/auth/callback # scope: email # verify_ssl: False # cookie: # secret_key: generate_some_random_string # max_age: 86400 server: debug: true # !!! NEVER USE ON PRODUCTION !!!

cors: enabled: true allow_origins: [http://localhost:3000] allow_credentials: true allow_methods: [''] allow_headers: [''] expose_headers: [X-Request-ID, Location, Access-Control-Allow-Credentials] superusers: - admin

Без Docker

$ python -m venv /some/.venv
$ source /some/.venv/activate
...
  • Установите пакет syncmaster со следующими дополнительными зависимостями:
$ pip install syncmaster[server]
...
  • Запустите процесс сервера
$ python -m syncmaster.server --host 0.0.0.0 --port 8000
...

Это тонкая обертка вокруг CLI uvicorn, опции и команды точно такие же.

Смотрите также