mirror of
https://github.com/elyby/accounts.git
synced 2024-11-26 16:52:02 +05:30
Readme
This commit is contained in:
parent
df700ba408
commit
6f30b9d352
@ -2,15 +2,13 @@
|
|||||||
## Application environment
|
## Application environment
|
||||||
YII_DEBUG=true
|
YII_DEBUG=true
|
||||||
YII_ENV=dev
|
YII_ENV=dev
|
||||||
DOMAIN=https://account.ely.by
|
DOMAIN=http://localhost
|
||||||
|
AUTHSERVER_HOST=authserver.ely.by
|
||||||
EMAILS_RENDERER_HOST=http://emails-renderer:3000
|
EMAILS_RENDERER_HOST=http://emails-renderer:3000
|
||||||
|
|
||||||
## Security params
|
## Security params
|
||||||
JWT_USER_SECRET=
|
JWT_USER_SECRET=replace_me_for_production
|
||||||
JWT_ENCRYPTION_KEY=
|
JWT_ENCRYPTION_KEY=thisisadummyvalue32latterslength
|
||||||
JWT_PUBLIC_KEY_PATH=
|
|
||||||
JWT_PRIVATE_KEY_PATH=
|
|
||||||
JWT_PRIVATE_KEY_PASS=
|
|
||||||
|
|
||||||
## External services
|
## External services
|
||||||
RECAPTCHA_PUBLIC=
|
RECAPTCHA_PUBLIC=
|
||||||
@ -37,25 +35,13 @@ REDIS_DATABASE=0
|
|||||||
REDIS_PASSWORD=
|
REDIS_PASSWORD=
|
||||||
|
|
||||||
## StatsD metrics params
|
## StatsD metrics params
|
||||||
STATSD_HOST=statsd.ely.by
|
STATSD_HOST=
|
||||||
STATSD_PORT=8125
|
STATSD_PORT=8125
|
||||||
# This value can be blank
|
# This value can be blank
|
||||||
STATSD_NAMESPACE=
|
STATSD_NAMESPACE=
|
||||||
|
|
||||||
## Dev-only params
|
## Xdebug configuration params
|
||||||
XDEBUG_CONFIG=remote_host=10.254.254.254
|
XDEBUG_CONFIG=remote_host=10.254.254.254
|
||||||
PHP_IDE_CONFIG=serverName=docker
|
# Use the next line if you're using Docker on Windows or Mac:
|
||||||
|
# XDEBUG_CONFIG=remote_host=host.docker.internal
|
||||||
|
PHP_IDE_CONFIG=serverName=accounts-elyby
|
||||||
# Web
|
|
||||||
VIRTUAL_HOST=account.ely.by,authserver.ely.by
|
|
||||||
AUTHSERVER_HOST=authserver.ely.by
|
|
||||||
# LETSENCRYPT_HOST=account.ely.by
|
|
||||||
# LETSENCRYPT_EMAIL=erickskrauch@ely.by
|
|
||||||
|
|
||||||
# MariaDB
|
|
||||||
ALLOW_EMPTY_PASSWORD=yes
|
|
||||||
MARIADB_ROOT_PASSWORD=
|
|
||||||
MARIADB_DATABASE=ely_accounts
|
|
||||||
MARIADB_USER=ely_accounts_user
|
|
||||||
MARIADB_PASSWORD=ely_accounts_password
|
|
118
README.md
118
README.md
@ -1,97 +1,85 @@
|
|||||||
# Accounts Ely.by
|
# Accounts Ely.by
|
||||||
|
|
||||||
## Развёртывание dev [backend]
|
Сервис управления Аккаунтами Ely.by, предоставляющий единую точку входа для наших и внешних сервисов по протоколу
|
||||||
|
OAuth2, а также реализующий сервер авторизации для серверов Minecraft и частично реализующий совместимое с API Mojang
|
||||||
|
для получения информации об аккаунтах.
|
||||||
|
|
||||||
Предварительно нужно установить [git](https://git-scm.com/downloads),
|
**Предупреждение**: этот проект не предназначен для использования вне экосистемы сервисов Ely.by.
|
||||||
[docker](https://docs.docker.com/engine/installation/) и его
|
|
||||||
[docker-compose](https://docs.docker.com/compose/install/).
|
|
||||||
|
|
||||||
За тем нужно установить, настроить и запустить [nginx-proxy](https://gitlab.com/elyby/nginx-proxy)
|
## Разработка
|
||||||
контейнер. Это делается один раз в рамках системы и в дальнейшем используется и для других проектов.
|
|
||||||
|
|
||||||
Также необходимо иметь доступ к `registry.ely.by`. Для этого выполнить команду `docker login registry.ely.by`,
|
Проект ориентирован на работу в Docker окружении, так что для полноценной работы проекта запускать его следует именно в
|
||||||
ввести свой логин и пароль. Если доступа нету, то нужно его попросить у кого-нибудь, кто может его выдать.
|
окружении Docker-контейнера. Ссылки на установки:
|
||||||
|
- [Docker](https://docs.docker.com/install/)
|
||||||
|
- [docker-compose](https://docs.docker.com/compose/install/)
|
||||||
|
|
||||||
За тем сливаем репозиторий:
|
Далее необходимо создать форк репозитория, а после клонировать его:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone git@gitlab.ely.by:elyby/accounts.git account.ely.by
|
git clone git@github.com:<your_username>/accounts.git
|
||||||
cd account.ely.by
|
cd accounts
|
||||||
```
|
```
|
||||||
|
|
||||||
Далее нужно создать `.env`, `docker-compose.yml` и `id_rsa` файлы:
|
Затем необходимо создать локальные файлы `.env` и `docker-compose.yml`:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cp .env-dist .env
|
cp .env.dist .env
|
||||||
cp docker-compose.dev.yml docker-compose.yml
|
cp docker-compose.dist.yml docker-compose.yml
|
||||||
cp ~/.ssh/id_rsa id_rsa # Использовать ссылку нельзя
|
|
||||||
```
|
```
|
||||||
|
|
||||||
**Касательно файла id_rsa**: часть зависимостей находятся в наших приватных репозиториях, получить
|
Скопированные файлы можно изменить под условия локальной среды разработки, но в общем случае они пригодны для
|
||||||
доступ куда можно только в том случае, если в контейнере окажется ключ, который имеет доступ к этим
|
использования без вашего вмешательства.
|
||||||
репозиториям.
|
|
||||||
|
|
||||||
Все вышеперечисленные файлы находятся под gitignore, так что с конечными файлами можно произвести
|
Контейнеры не умеют автоматически устанавливать зависимости, так что их нужно установить самостоятельно. Если у вас в
|
||||||
все необходимые манипуляции под конкретную задачу разработки. **В файле `.env` обязательно следует
|
системе установлен `php` и `composer`, то можно установить зависимости через команду `composer install`. Вы также всегда
|
||||||
задать `JWT_USER_SECRET`, иначе авторизация на бекенде не заработает.**
|
можете установить зависимости с помощью контейнера:
|
||||||
|
|
||||||
После этого просто выполняем старт всех контейнеров:
|
```sh
|
||||||
|
docker-compose run --rm --no-deps app composer install
|
||||||
|
```
|
||||||
|
|
||||||
|
При первом запуске произойдёт процесс загрузки и построения необходимых образов, после чего все контейнеры начнут
|
||||||
|
свою работу, и вы сможете приступить к разработке.
|
||||||
|
|
||||||
|
Для запуска всех контейнеров, используйте следующую команду:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
Контейнеры автоматически сбилдятся и начнут свою работу.
|
По умолчанию, в `docker-compose.yml` указан `80` порт для самого сервиса, а также `8080` порт для подключения
|
||||||
|
к phpMyAdmin. Если сервисы `web` и `phpmyadmin` выбросят ошибку, связанную с занятостью портов, то необходимо или
|
||||||
|
освободить необходимые порты (`80` и `8080`), или же изменить их, после чего заново выполнить команду
|
||||||
|
`docker-compose up -d`.
|
||||||
|
|
||||||
## Развёртывание dev [frontend]
|
### Пользовательский интерфейс
|
||||||
|
|
||||||
Чтобы поднять сборку frontend приложения, необходимо иметь установленный в системе [Node.js](https://nodejs.org)
|
Этот репозиторий содержит в себе только код для API бекенда, в то время как интерфейс находится в
|
||||||
версии 5.x или 6.x, а так же npm 3-ей версии (`npm i -g npm` для обновления).
|
[соседнем репозитории](https://github.com/elyby/accounts-frontend). Пользователи Linux и Mac могут использовать
|
||||||
|
следующий скрипт, чтобы получить последнюю версию пользовательского интерфейса:
|
||||||
|
|
||||||
За тем переходим в папку `frontend` и устанавливаем зависимости:
|
```bash
|
||||||
|
curl -s https://api.github.com/repos/elyby/accounts-frontend/releases/latest \
|
||||||
```sh
|
| grep "browser_download_url.*tar.gz" \
|
||||||
cd frontend
|
| cut -d : -f 2,3 \
|
||||||
npm i
|
| tr -d \" \
|
||||||
|
| xargs curl -sLo /tmp/accounts-frontend.tar.gz \
|
||||||
|
&& rm -rf frontend \
|
||||||
|
&& mkdir -p frontend \
|
||||||
|
&& tar -zxf /tmp/accounts-frontend.tar.gz -C frontend \
|
||||||
|
&& rm -f /tmp/accounts-frontend.tar.gz
|
||||||
```
|
```
|
||||||
|
|
||||||
После того, как все зависимости будут установлены, можно поднять dev-сервер. Здесь есть 2 пути: можно, следуя
|
Если этот скрипт не сработал для вас, то вы можете самостоятельно перейти на
|
||||||
инструкции выше, поднять backend на своей машине через Docker. Если же разработка не привязывается к специфичной
|
[страницу релизов](https://github.com/elyby/accounts-frontend/releases), скачать подходящий `build`-архив и
|
||||||
версии backend, то более быстрым и удобным способ будет использовать наш dev-сервер, расположенный под адресу
|
разархивировать всё его содержимое в папку `frontend`.
|
||||||
https://dev.account.ely.by.
|
|
||||||
|
|
||||||
В любом из случаев необходимо в папке `frontend/config` скопировать файл `template.env.js` в `env.js` (находится
|
### Как войти в работающий контейнер
|
||||||
под .gitignore) и указать в параметре `apiHost` или свой локальный сервер (тот хост, что был указан в .env
|
|
||||||
как `VIRTUAL_HOST`), или указав просто `https://dev.account.ely.by`.
|
|
||||||
|
|
||||||
После того, как это будет сделано, запускаем dev-сервер (находясь в папке frontend):
|
Начиная с версии `docker-compose` 1.9.0, была добавлена команда `docker-compose exec`, которая позволяет выполнить
|
||||||
|
на работающем контейнере произвольную команду, основываясь на имени сервиса в compose-файле. Так, например, чтобы
|
||||||
```
|
войти в shell контейнера `app`, используйте следующую команду:
|
||||||
npm start
|
|
||||||
```
|
|
||||||
|
|
||||||
dev-сервер поднимется на 8080 порту и будет доступен по адресу http://localhost:8080.
|
|
||||||
|
|
||||||
### Как влезть в работающий контейнер
|
|
||||||
|
|
||||||
Начиная с версии docker-compose 1.9.0, появилась команда `docker-compose exec`, которая позволяет выполнить
|
|
||||||
на работающем контейнере произвольную команду, основываясь на имени сервиса в compose файле.
|
|
||||||
|
|
||||||
```
|
```
|
||||||
docker-compose exec app bash
|
docker-compose exec app bash
|
||||||
```
|
```
|
||||||
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
_// Старый вариант_
|
|
||||||
|
|
||||||
Сперва, с помощью команды `docker ps` мы увидим все запущенные контейнеры. Нас интересуют значения
|
|
||||||
из первой колонки CONTAINER ID или NAMES. Узнать, чему они соответствуют можно прочитав название IMAGE
|
|
||||||
из 2 колонки. Чтобы выполнить команду внутри работабщего контейнера, нужно выполнить:
|
|
||||||
|
|
||||||
```
|
|
||||||
docker exec -it accountelyby_app_1 bash
|
|
||||||
```
|
|
||||||
|
|
||||||
Где `accountelyby_app_1` - одно из значений CONTAINER ID или NAMES. Для выхода из контейнера
|
|
||||||
используем `exit`.
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
version: '3.4'
|
version: '3.4'
|
||||||
services:
|
services:
|
||||||
web:
|
web:
|
||||||
image: registry.ely.by/elyby/accounts-nginx:latest
|
image: elyby/accounts/nginx:local
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
target: web
|
target: web
|
||||||
@ -11,14 +11,13 @@ services:
|
|||||||
- app
|
- app
|
||||||
- emails-renderer
|
- emails-renderer
|
||||||
env_file: .env
|
env_file: .env
|
||||||
|
ports:
|
||||||
|
- 80:80
|
||||||
volumes:
|
volumes:
|
||||||
- ./:/var/www/html
|
- ./:/var/www/html
|
||||||
networks:
|
|
||||||
- default
|
|
||||||
- nginx-proxy
|
|
||||||
|
|
||||||
app:
|
app:
|
||||||
image: registry.ely.by/elyby/accounts:dev
|
image: elyby/accounts:local
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
target: app
|
target: app
|
||||||
@ -36,7 +35,7 @@ services:
|
|||||||
- php
|
- php
|
||||||
|
|
||||||
worker:
|
worker:
|
||||||
image: registry.ely.by/elyby/accounts:dev
|
image: elyby/accounts:local
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
target: app
|
target: app
|
||||||
@ -51,7 +50,7 @@ services:
|
|||||||
env_file: .env
|
env_file: .env
|
||||||
|
|
||||||
cron:
|
cron:
|
||||||
image: registry.ely.by/elyby/accounts:dev
|
image: elyby/accounts:local
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
target: app
|
target: app
|
||||||
@ -70,17 +69,23 @@ services:
|
|||||||
image: elyby/emails-renderer:dev
|
image: elyby/emails-renderer:dev
|
||||||
|
|
||||||
db:
|
db:
|
||||||
|
image: elyby/accounts/mariadb:local
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
target: db
|
target: db
|
||||||
args:
|
args:
|
||||||
build_env: dev
|
build_env: dev
|
||||||
env_file: .env
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/mysql:/bitnami/mariadb
|
- ./data/mariadb:/bitnami/mariadb
|
||||||
|
environment:
|
||||||
|
ALLOW_EMPTY_PASSWORD: "yes"
|
||||||
|
MARIADB_ROOT_PASSWORD: ""
|
||||||
|
MARIADB_DATABASE: ely_accounts
|
||||||
|
MARIADB_USER: ely_accounts_user
|
||||||
|
MARIADB_PASSWORD: ely_accounts_password
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:3.0-alpine
|
image: redis:5.0-alpine
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/redis:/data
|
- ./data/redis:/data
|
||||||
|
|
||||||
@ -113,33 +118,31 @@ services:
|
|||||||
# ],
|
# ],
|
||||||
# ];
|
# ];
|
||||||
#
|
#
|
||||||
# 2) Clone api/tests/functional.suite.dist.yml into api/test/functional.suite.yml
|
# 2) Uncomment the next 2 services (testdb and testredis):
|
||||||
# and adjust Redis module host value to the "testredis".
|
|
||||||
#
|
|
||||||
# 3) Uncomment the next 2 services (testdb and testredis):
|
|
||||||
#
|
#
|
||||||
# testdb:
|
# testdb:
|
||||||
|
# image: elyby/accounts/mariadb:local
|
||||||
# build:
|
# build:
|
||||||
# context: .
|
# context: .
|
||||||
# target: db
|
# target: db
|
||||||
# args:
|
# args:
|
||||||
# build_env: dev
|
# build_env: dev
|
||||||
# volumes:
|
# volumes:
|
||||||
# - ./data/mysql-test:/var/lib/mysql
|
# - ./data/mariadb-test:/bitnami/mariadb
|
||||||
# environment:
|
# environment:
|
||||||
# - MYSQL_ALLOW_EMPTY_PASSWORD=yes
|
# ALLOW_EMPTY_PASSWORD: "yes"
|
||||||
# - MYSQL_ROOT_PASSWORD=
|
# MARIADB_ROOT_PASSWORD: ""
|
||||||
# - MYSQL_DATABASE=test
|
# MARIADB_DATABASE: test
|
||||||
# - MYSQL_USER=test
|
# MARIADB_USER: test
|
||||||
# - MYSQL_PASSWORD=test
|
# MARIADB_PASSWORD: test
|
||||||
#
|
#
|
||||||
# testredis:
|
# testredis:
|
||||||
# image: redis:3.0-alpine
|
# image: redis:5.0-alpine
|
||||||
# volumes:
|
# volumes:
|
||||||
# - ./data/redis-test:/data
|
# - ./data/redis-test:/data
|
||||||
#
|
#
|
||||||
# 4) To run migrations on tests database you must execute slightly adjusted
|
# 4) To run migrations on tests' database you must execute slightly adjusted
|
||||||
# migrate command: env YII_ENV=test yii migrate
|
# migrate command: "env YII_ENV=test yii migrate"
|
||||||
|
|
||||||
phpmyadmin:
|
phpmyadmin:
|
||||||
build: ./docker/phpmyadmin
|
build: ./docker/phpmyadmin
|
||||||
@ -147,14 +150,7 @@ services:
|
|||||||
- PMA_ARBITRARY=1
|
- PMA_ARBITRARY=1
|
||||||
- PMA_USER=root
|
- PMA_USER=root
|
||||||
- PMA_PASSWORD=
|
- PMA_PASSWORD=
|
||||||
- VIRTUAL_HOST=pma.account.ely.by.local # Feel free to adjust this domain
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
networks:
|
ports:
|
||||||
- default
|
- 8080:80
|
||||||
- nginx-proxy
|
|
||||||
|
|
||||||
networks:
|
|
||||||
nginx-proxy:
|
|
||||||
external:
|
|
||||||
name: nginx-proxy
|
|
@ -1,87 +0,0 @@
|
|||||||
version: '3.4'
|
|
||||||
|
|
||||||
x-logging:
|
|
||||||
&default-logging
|
|
||||||
options:
|
|
||||||
max-size: 50m
|
|
||||||
|
|
||||||
services:
|
|
||||||
web:
|
|
||||||
image: registry.ely.by/elyby/accounts-nginx:latest
|
|
||||||
restart: always
|
|
||||||
depends_on:
|
|
||||||
- app
|
|
||||||
- emails-renderer
|
|
||||||
env_file: .env
|
|
||||||
volumes:
|
|
||||||
- ./frontend:/var/www/html/frontend
|
|
||||||
networks:
|
|
||||||
- default
|
|
||||||
- nginx-proxy
|
|
||||||
logging: *default-logging
|
|
||||||
|
|
||||||
app:
|
|
||||||
image: registry.ely.by/elyby/accounts:latest
|
|
||||||
restart: always
|
|
||||||
depends_on:
|
|
||||||
- db
|
|
||||||
- redis
|
|
||||||
env_file: .env
|
|
||||||
volumes:
|
|
||||||
- certs-storage:/var/www/html/data/certs
|
|
||||||
networks:
|
|
||||||
default:
|
|
||||||
aliases:
|
|
||||||
- php
|
|
||||||
logging: *default-logging
|
|
||||||
|
|
||||||
worker:
|
|
||||||
image: registry.ely.by/elyby/accounts:latest
|
|
||||||
restart: always
|
|
||||||
command: ['php', 'yii', 'queue/listen', '-v']
|
|
||||||
depends_on:
|
|
||||||
- db
|
|
||||||
- redis
|
|
||||||
env_file: .env
|
|
||||||
logging: *default-logging
|
|
||||||
|
|
||||||
cron:
|
|
||||||
image: registry.ely.by/elyby/accounts:latest
|
|
||||||
restart: always
|
|
||||||
command: ['crond', '-s', '/etc/cron.d', '-f', '-L', '/var/log/cron.log']
|
|
||||||
stop_signal: SIGKILL
|
|
||||||
depends_on:
|
|
||||||
- db
|
|
||||||
- redis
|
|
||||||
env_file: .env
|
|
||||||
logging: *default-logging
|
|
||||||
|
|
||||||
emails-renderer:
|
|
||||||
image: elyby/emails-renderer:dev
|
|
||||||
logging: *default-logging
|
|
||||||
|
|
||||||
db:
|
|
||||||
image: registry.ely.by/elyby/accounts-mariadb:latest
|
|
||||||
restart: always
|
|
||||||
env_file: .env
|
|
||||||
volumes:
|
|
||||||
- ./data/mysql:/bitnami/mariadb
|
|
||||||
|
|
||||||
redis:
|
|
||||||
image: redis:3.0-alpine
|
|
||||||
restart: always
|
|
||||||
volumes:
|
|
||||||
- ./data/redis:/data
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
certs-storage:
|
|
||||||
driver: local
|
|
||||||
driver_opts:
|
|
||||||
type: none
|
|
||||||
device: $PWD/data/certs
|
|
||||||
o: bind
|
|
||||||
|
|
||||||
networks:
|
|
||||||
nginx-proxy:
|
|
||||||
external:
|
|
||||||
name: nginx-proxy
|
|
Loading…
Reference in New Issue
Block a user