Проект использует архитектуру Single Docker Image. При сборке Frontend компилируется и копируется внутрь сервера, который затем раздает его как статику. База данных и миграции управляются автоматически при старте контейнера.
Вам потребуется только:
- Docker Desktop (с поддержкой Docker Compose)
Локальная установка Node.js / pnpm не требуется.
В папке server/ создайте файл .env (если его нет), используя пример ниже. Убедитесь, что параметры совпадают с docker-compose.yaml.
Пример .env:
PORT=2567
NODE_ENV=production
# Хосты указывают на имена сервисов в Docker сети
DATABASE_URL="postgresql://admin:3120@postgres/game_db_prod?schema=public"
REDIS_HOST="redis"
JWT_SECRET="ваш_секретный_ключ"
ADMIN_PASSWORD=1234Перейдите в папку сервера и запустите стек:
cd server
docker-compose up -dЭта команда:
- Скачает (или использует локальный) образ
game_server. - Запустит PostgreSQL и Redis.
- Запустит Game Server.
- Автоматически применит миграции БД (скрипт
entrypoint.sh).
После запуска игра доступна в браузере по адресу: 👉 http://localhost:2567
(Сервер Colyseus раздает сбилженный клиент по этому порту)
В docker-compose.yaml используется фиксированный тег образа (tohun/game-server:beta). Если вы внесли изменения в код (клиента или сервера), вам нужно пересобрать образ локально, чтобы изменения вступили в силу.
Выполните команду из корня проекта (где лежит pnpm-workspace.yaml):
docker build -t tohun/game-server:beta -f server/Dockerfile .После сборки перезапустите композ:
cd server
docker-compose down
docker-compose up -dПосмотреть логи (если что-то не запускается):
docker-compose logs -f game_serverОстановить все сервисы:
docker-compose downПринудительно пересоздать базу данных (удалить volumes):
docker-compose down -v