chrly/README.md
ErickSkrauch eab7c6ecaa Все Docker штуки опущены в директорию docker.
Production Docker контейнер теперь использует alpine linux вместо пустого scratch
В production Docker контейнер добавлен docker-entrypoint.sh, который автоматически создаёт конфиг по умолчанию.
2017-09-04 20:24:55 +03:00

4.7 KiB
Raw Blame History

Ely.by Minecraft Skinsystem

Реализация API системы скинов для Minecraft v4.

Config

Конфигурация может задаваться посредством любого из перечисленных форматов файлов: JSON, TOML, YAML, HCL и Java properties. Кроме того, параметры конфигурации могут перезаписываться доступными при запуске программы ENV переменными.

Заметка: ENV переменные именуются как KEY.SUBKEY.SUBSUBKEY, т.е. все символы должны быть заглавными, а точки должны отделять уровень вложенности.

Пример файла конфигурации находится в config.dist.yml. Внутри dist-файла есть комментарии, поясняющие назначение тех или иных параметров. Для работы его следует скопировать в локальный config.yml и отредактировать под свои нужды.

Развёртывание

Деплоить проект можно двумя способами:

  1. Скомпилировав и запустив бинарный файл, а также обеспечив ему доступ ко всем необходмым сервисам.

  2. Используя Docker и docker-compose.

Первый случай не буду описывать, т.к. долго, мучительно и никто так делать не будет, я гарантирую это, поэтому перейдём сразу ко второму.

Прежде всего необходимо установить Docker и docker-compose.

Для запуска последней версии проекта достаточно скопировать содержимое файла docker/docker-compose.prod.yml в файл docker-compose.yml непосредственно на месте установки, после чего ввести в консоль команду:

docker-compose up -d

Web-приложение, amqp worker и все сопутствующие сервисы будут автоматически запущены. Данные из контейнеров будут синхронизироваться в папку data.

Разработка

Перво-наперво необходимо установить последнюю версию Go и сконфигурировать переменную окружения GOPATH, а также установить инструмент контроля версий dep.

Затем можно склонировать репозиторий хитрым способом, чтобы удовлетворить все прекрасные особенности Go:

# Сперва создадим подпапку для приватных 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-compose.dev.yml и поднимаем сервисы:

cp docker/docker-compose.dev.yml docker-compose.yml
docker-compose up -d

После этого go run main.go serve должен запустить web-сервер без дополнительной модификации файла конфигурации.