Production Docker контейнер теперь использует alpine linux вместо пустого scratch В production Docker контейнер добавлен docker-entrypoint.sh, который автоматически создаёт конфиг по умолчанию.
4.7 KiB
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
и отредактировать под свои нужды.
Развёртывание
Деплоить проект можно двумя способами:
-
Скомпилировав и запустив бинарный файл, а также обеспечив ему доступ ко всем необходмым сервисам.
-
Используя 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-сервер без дополнительной модификации файла конфигурации.