- Убедитесь что у вас установлен
node
,docker
иDocker Compose v2 и выше
- Выполните из корня проекта команду
yarn bootstrap
- это обязательный шаг, без него ничего работать не будет :)
Далее необходимо собрать приложение с помощью докер контейнеров для этого:
-
На основании файла .env.sample создайте ваш .env в корне проекта.
Для разработки вам может быть не нужно запускать все контейнеры, для работы с БД вы можете запустить отдельный контейнер postgres
sudo docker compose postgres up -d
. Подробнее в п.5Для сборки и запуска всех контейнеров используем команду
docker compose up
для Linuxsudo docker compose up
. В этом режиме вы будете видеть логи сборки и запуска контейнеров. Параметры сборки и список контейнеров смотри в docker-compose.yml. Для запуска контейнеров в фоновом режиме необходимо остановить текущие черезctrl+ C
и запустить заново командойdocker compose up -d
для Linuxsudo docker compose up -d
. В фоновом режиме логи контейнеров можно смотреть черезdocker logs id_контейнера
.После сборки должно запуститься 4-ре контейнера:
- praktikum-client - нужен только для прохождения PR, можно остановить.
- praktikum-server - наш сервер с SSR, он же отдает и клиентские файлы
- praktikum-game-postgres - БД
- pgadmin - UI для БД (Особенности настройки смотри в ./docs/pgadmin.md)
-
Если нужно что-то поменять в приложении: На текущем этапе приложение собрано в образе praktikum-server, чтобы изменения появились в контейнере необходимо будет пересобрать образ и запустить новый контейнер. См. п.5 для отладки приложение без пересборки.
Для пересборки образа praktikum-server сначала лучше остановить текущий и удалить его.
docker ps
, чтоб посмотреть id*контейнераdocker rm -f id*контейнера
чтоб удалить контейнер,docker images
, чтоб посмотреть id_образаdocker image rm id_образа
, чтоб удалить его. Еще можно очистить место на диске от удаленных контейнеров и образов черезdocker system prune
. После применения изменений в приложении заново запускаем его сборкуdocker compose up server
, для Linuxsudo docker compose up server
.Как увидите в логе, что сервер успешно запустился, можете перезапустить его в фоновом режимеdocker compose up server -d
-
Можно проводить изменения в приложении, запуская сервер локально. Т.к. в этом режиме нам нужно будет подключиться к БД не из сети контейнера, необходимо будет изменить данные для подключения в файле .env, обычно это localhost
POSTGRES_HOST=localhost
. Собираем сначала клиентcd ./packages/client/ && yarn build
. Если ранее не делали ссылку на клиент как локальный пакет для сервера то делаем ее из клиентской папкиyarn link
После сборки клиента переходим в папку с серверомcd ../server
. Если ранее не подключали клиент как пакет, далем это через командуyarn link client
. Собираем локально серверyarn build
, для Linuxyarn build-l
.- После сборки для режима
DEV
запускаем командойyarn dev
илиcross-env NODE_ENV=development node dist/index.js
. - Для режима
PROD
режима запускаем черезnode ./dist/index.js
- После сборки для режима
Форум: ./docs/api-forum.md
- Выполните команду
yarn dev
- Выполните команду
yarn dev --scope=client
чтобы запустить только клиент - Выполните команду
yarn dev --scope=server
чтобы запустить только server
В этом проекте используется monorepo
на основе lerna
Чтобы добавить зависимость для клиента
yarn lerna add {your_dep} --scope client
Для сервера
yarn lerna add {your_dep} --scope server
И для клиента и для сервера
yarn lerna add {your_dep}
Если вы хотите добавить dev зависимость, проделайте то же самое, но с флагом dev
yarn lerna add {your_dep} --dev --scope server
Для клиента используется react-testing-library
yarn test
yarn lint
yarn format
yarn build
И чтобы посмотреть что получилось
yarn preview --scope client
yarn preview --scope server
В проекте используется lefthook
Если очень-очень нужно пропустить проверки, используйте --no-verify
(но не злоупотребляйте :)
Откройте issue, я приду :)
Зарегистрируйте аккаунт на vercel
Следуйте инструкции
В качестве root directory
укажите packages/client
Все ваши PR будут автоматически деплоиться на vercel. URL вам предоставит деплоящий бот
Перед первым запуском выполните node init.js
docker compose up
- запустит три сервиса
- nginx, раздающий клиентскую статику (client)
- node, ваш сервер (server)
- postgres, вашу базу данных (postgres)
Если вам понадобится только один сервис, просто уточните какой в команде
docker compose up {sevice_name}
, например docker compose up server