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
- После запуска и готовности сервера откройте http://localhost:8000/docs.
Без Docker
-
Установите Python 3.11 или выше
-
Настройте Реляционную базу данных, запустите миграции
-
Настройте Брокер сообщений
-
Создайте виртуальное окружение
$ 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, опции и команды точно такие же.
- После запуска и готовности сервера откройте http://localhost:8000/docs.