rollun-service-skeleton
- скелет для построения сервисов на базе zend-expressive.
В rollun-service-skeleton
изначально подключены такие модули:
- rollun-com/rollun-datastore - абстрактное хранилище данных;
- rollun-com/rollun-permission - проверка прав доступа и OAuth аутентификация;
- rollun-com/rollun-logger - логирование;
- zendframework/zend-expressive-fastroute - рутизация;
- zendframework/zend-servicemanager - реализация PSR-11.
rollun-service-skeleton
имеет несколько роутов по умолчанию:
/
- тестовый хендлер/oauth/redirect
- редирект на гугл аутентификацию
Использовать
/oauth/redirect?action=login
для аутентификации на логин,/oauth/redirect?action=register
для аутентификации на регистрацию.
/oauth/login
- роутинг на который google редиректит пользователя (при его успешной аутентификации) для логина/oauth/register
- роутинг на который google редиректит пользователя (при его успешной аутентификации) для регистрации/logout
- логаут пользователя/api/datastore/{resourceName}[/{id}]
роутинг для доступу к абстрактному хранилищу, гдеresourceName
название сервиса, аid
- идентификатор записи.
-
Установите зависимости.
composer install
-
Для работы
rollun-com/rollun-datastore
иrollun-com/rollun-permission
нужны таблицы в базе данных:Так же могут пригодиться настройки ACL по умолчанию: acl_default.sql.
-
Обязательные переменные окружения:
-
Для работы сервиса:
- APP_ENV - возможные значения:
prod
,test
,dev
- APP_DEBUG - возможные значения:
true
,false
- SERVICE_NAME - название сервиса
- POD_NAME - уникальное имя сервиса
(более детально тут)
- APP_ENV - возможные значения:
-
Для БД:
- DB_DRIVER (
Pdo_Mysql
- по умолчанию) - DB_NAME
- DB_USER
- DB_PASS
- DB_HOST
- DB_PORT (
3306
- по умолчанию)
- DB_DRIVER (
-
Для аутентификации:
- GOOGLE_CLIENT_SECRET - client_secret в личном кабинете google
- GOOGLE_CLIENT_ID - client_id в личном кабинете google
- GOOGLE_PROJECT_ID - project_id в личном кабинете google
- HOST - домен сайт где происходит авторизация
- EMAIL_FROM - от кого отправить email для подтверждения регистрации
- EMAIL_TO - кому отправить email для подтверждения регистрации
-
-
Та же сразу с скелетоном поставляется php.ini и php-fpm.conf.
При обращении на /api/webhook/cron
срабатывает механизм отправки метрики на health-cheker
, если такой метрики нету,
она будет создана автоматически. Документация API метрик.
Для собюытий типа php рантайм метрики и тд лучше использховать прометеус, с открытием ендпоинта /metrics
Во всех остальных случаях лучше использовать health-checker
С скелетоном поставляется Dockerfile и настроеный CI/CD используя Github Actions и D2C WebHooks
CI/CD по умолчанию запускается по пушу в master ветку,
это легко можно кастомизировать поменяв секцию on
в deploy.yaml
Так же нужно подбравить шаг build
в deploy.yaml, там в коментах все указано
Для того, что бы CI/CD работал, необходимо добавить так называемые секреты в github репозиторий:
- D2C_DEPLOY_WEBHOOK - url для обновления Вашего контейнера в D2C doc
- DOCKER_USER - Ваше имя аккаунта в github.
- DOCKER_PASS - github token с правами на запись в packages doc
Для того, что бы использовать другой docker registry вместо github packages, нужно заменить ghcr.io
на Ваш registry
а DOCKER_USER и DOCKER_PASS поменять на ваш логин и пароль от registry
Схема названия докер образа:
- prod - ghcr.io/rollun-com/repo-name/repo-name/prod:latest
- stage - ghcr.io/rollun-com/repo-name/repo-name/stage:latest
Перед пуллом, нужно залогинится с помошью docker login.
Если у вас зависла установка зависимостей, то попробуйте поменять версии пакетов в composer.json на
"rollun-com/rollun-callback": "^5.0",
"rollun-com/rollun-logger": "^4.2",
а после установки вернуть прежние версии и запустить
composer update "rollun-com/*" --with-dependencies
Бібліотеки сумісні включно до наступних версій:
{
"rollun-com/rollun-callback": "^6.0.0",
"rollun-com/rollun-datastore": "^7.0.0",
"rollun-com/rollun-logger": "^6.0.0",
"rollun-com/rollun-utils": "^6.0.0",
"rollun-com/rollun-openapi": "^9.0.0"
}