Шаблон проекта с сервером на Node.js
Содержание шаблона
Как использовать шаблон
- Форкнуть репозиторий в группу special
- Сделать unfork у нового репозитория
- Поменять name и path у нового репозитория
- Поставить задачу в JIRA в проект Helpdesk для настройки деплоя репозитория (пример)
Запуск сервера на локальной машине
Если в проекте используется mysql, в корне проекта необходимо создать .env файл. За основу можно взять данный файл. Из него подтянутся переменные с данными для логина в бд.
Для запуска приложения необходимо установить Docker и выполнить команду:
docker-compose up
Docker Compose состоит из трех сервисов:
- Express сервер
- Сервер бд mysql
- Сервис миграции схемы бд
Сервис миграции схемы бд
Данный сервис позволяет производить контролируемые изменения в схему базы данных.
Для каждой миграции должно существовать 2 файла:
- up файл с изменениями в схему бд
- down файл, которые отменяет изменения текущей миграции
Правило нейминга:
{version}_{title}.up.{extension}
{version}_{title}.down.{extension}
Подробнее о нейминге и небольшой F.A.Q
Скрипты миграции (с примерами) находятся в папке migrations/script.
Полная документация инструмента
Так как миграция присутствует в docker-compose.yml как один из сервисов, она проходит при запуске всего приложения (docker-compose up).
Также можно провести миграцию отдельно от Docker Compose, выполнив команду в командной строке:
docker run -v /Users/user/Documents/sports/server-with-ts/migrations/scripts:/migrations --network host migrate/migrate -path=/migrations/ -database "mysql://user:password@tcp(localhost:3306)/test_db" up
Еще несколько полезных команд
Они могут быть полезны при работе с Докером
Собрать докер-образ
docker build . -f Dockerfile_local -t node
Пересобрать образ одного из docker-compose сервиса
docker-compose up --build $service-name
Создать сеть
docker network create server-with-ts-network
Запустить контейнер с указанием сети
docker run -it -p 3000:3000 --network server-with-ts-network node
Запустить mysql контейнер
docker run --rm -d --name mysql_server -p 3307:3306 -e MYSQL_DATABASE='test_db' -e MYSQL_USER='user' -e MYSQL_PASSWORD='password' -e MYSQL_ROOT_PASSWORD='password' --network server-with-ts-network mysql:8.0
Зайти внутрь файловой системы запущенного контейнера
docker exec -it $container-name sh