Galaga
September 2, 2022 · View on GitHub
Легендарная аркадная игра 80х
Badges
Технологии
Проект создан на базе:
- React
- React Router
- React Hook Form
- Redux
- Typescript
- Webpack
- Tailwind CSS
- Docker
- Browser API
Режим разработки
$ npm i
$ npm run dev
Запуститься два докер контейнера postgres:14.5-alpine c именем galaga-db и dpage/pgadmin4 c именем galaga-pgadmin. Подробнее про PGAdmin
Дополнительные команды:
npm run lint- Проверка типов и линтиг всего проектаlocal:dev- запуск webpack сборки локальноdc:up- Запуск в docker-compose приложения и базыdc:down- Удалить запущенные контейнерыdc:logs- Вывести логи контейнеров, если добавить-- -f, логи будут обновляться, можно выводить логи только определенного контейнера-- appdc:up:dev- Запуск в docker-compose PGAdmin и базы, можно запустить только выбранный контейнер-- dbdc:down:dev- Удалить запущенные контейнерыdc:logs:dev- Вывести логи контейнеров
Для корректного запуска необходимо создать файл .env в корне проекта со следующим содержимым
NODE_ENV=development
PORT=3000
DB_PORT=5432
DB_HOST=db
DEBUG="galaga:*"
POSTGRES_USER=<ЛюбоеИмяПользователяБД>
POSTGRES_PASSWORD=<ЛюбойПарольБД>
POSTGRES_DB=<НазваниеБД>
PGADMIN_DEFAULT_EMAIL=<ЛогинВPGAdmin>
PGADMIN_DEFAULT_PASSWORD=<ПарольВPGAdmin>
PGADMIN_LISTEN_PORT=80
При этом база <НазваниеБД> должна быть создана в ручную, можно через PGAdmin, приложение
автоматически добавляет суффиксы к имени базы для разных окружений <НазваниеБД>_test,
<НазваниеБД>_dev эти базы тоже должны быть созданы в ручную.
DB_HOST - для prod окружения указывается имя сервиса с базой данных указанное в docker-compose.yml, по умолчанию
db, для dev окружения необходимо указать localhost, так как приложение собирается локально.
POSTGRES_PASSWORD - пароль к базе данных внутри postgres (указывается в PGAdmin при подключении
к базе)
PGADMIN_DEFAULT_PASSWORD - Пароль к web-морде PGAdmin`а.
При добавлении коннекта к базе в PGAdmin хост указывается как имя сервиса с базой данных
указанное в docker-compose.yml, по умолчанию db. Если использовать сторонний софт, то хост
указывается как localhost
Посмотреть куда подключается приложение можно в логах, при установленной переменной DEBUG="galaga:*", искать строчку:
galaga:server:database waiting connection [postgres@db:5432?db=galaga_dev] .... +0ms
где:
postgres- имя пользователя указанное вPOSTGRES_USERdb- хост БД указанный вDB_HOST5432- порт БД указанный вDB_PORTgalaga_dev- имя базы данных с автоматическим суффиксом см. выше, указанное вPOSTGRES_DB
Неочевидно! При запуске приложение продует подключатся к базе 5 раз с интервалом в 5 сек. Если подключение не установилось за этот промежуток времени, повторные попытки предприняты не будут и приложение будет считать, что подключение отсутствует и отдавать ошибку 500 на все запросы к API
Сборка приложения
$ npm i
$ npm run build