mirror of
https://github.com/elyby/chrly.git
synced 2024-12-24 05:59:54 +05:30
eab7c6ecaa
Production Docker контейнер теперь использует alpine linux вместо пустого scratch В production Docker контейнер добавлен docker-entrypoint.sh, который автоматически создаёт конфиг по умолчанию.
75 lines
4.7 KiB
Markdown
75 lines
4.7 KiB
Markdown
# 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-сервер без дополнительной модификации файла конфигурации.
|