# Ely.by Minecraft Skinsystem Реализация API системы скинов для Minecraft v4. ## Config Конфигурация может задаваться посредством любого из перечисленных форматов файлов: JSON, TOML, YAML, HCL и Java properties. Кроме того, параметры конфигурации могут перезаписываться доступными при запуске программы ENV переменными. > **Заметка**: ENV переменные именуются как KEY.SUBKEY.SUBSUBKEY, т.е. все символы должны быть заглавными, а точки должны отделять уровень вложенности. Пример файла конфигурации находится в [config.dist.yml](config.dist.yml). Внутри dist-файла есть комментарии, поясняющие назначение тех или иных параметров. Для работы его следует скопировать в локальный `config.yml` и отредактировать под свои нужды. ## Развёртывание Деплоить проект можно двумя способами: 1. Скомпилировав и запустив бинарный файл, а также обеспечив ему доступ ко всем необходмым сервисам. 2. Используя Docker и docker-compose. *Первый случай не буду описывать, т.к. долго, мучительно и никто так делать не будет, я гарантирую это*, поэтому перейдём сразу ко второму. Прежде всего необходимо установить [Docker](https://docs.docker.com/engine/installation/) и [docker-compose](https://docs.docker.com/compose/install/). Для запуска последней версии проекта достаточно скопировать содержимое файла [docker/docker-compose.prod.yml](docker/docker-compose.prod.yml) в файл `docker-compose.yml` непосредственно на месте установки, после чего ввести в консоль команду: ```sh docker-compose up -d ``` Web-приложение, amqp worker и все сопутствующие сервисы будут автоматически запущены. Данные из контейнеров будут синхронизироваться в папку `data`. ## Разработка Перво-наперво необходимо [установить последнюю версию Go](https://golang.org/doc/install) и сконфигурировать переменную окружения GOPATH, а также установить инструмент контроля версий [dep](https://github.com/golang/dep). Затем можно склонировать репозиторий хитрым способом, чтобы удовлетворить все прекрасные особенности Go: ```sh # Сперва создадим подпапку для приватных Go проектов Ely.by mkdir -p $GOPATH/src/elyby # Затем непосредственно клинируем репозиторий туда, где его ожидает увидеть Go git clone git@gitlab.ely.by:elyby/minecraft-skinsystem.git $GOPATH/src/elyby/minecraft-skinsystem # Переходим в папку проекта cd $GOPATH/src/elyby/minecraft-skinsystem # Устанавливаем зависимости dep ensure ``` Чтобы запустить проект достаточно написать `go run main.go`, но без файла конфигурации и Redis программа долго не проработает. Поэтому сперва копируем `config.dist.yml` в `config.yml` и, при необходимости, затачиваем его под себя. Redis можно установить в систему самостоятельно, но гораздо удобнее воспользоваться готовыми сервисами, описанными в [docker/docker-compose.dev.yml](docker/docker-compose.dev.yml). Для этого просто копируем `docker-compose.dev.yml` и поднимаем сервисы: ```sh cp docker/docker-compose.dev.yml docker-compose.yml docker-compose up -d ``` После этого `go run main.go serve` должен запустить web-сервер без дополнительной модификации файла конфигурации.