Skip to content

aweppc/tfs-server-demo

Repository files navigation

Демка с 4 лекции ТФШ

После запуска приложение доступно по адресу http://localhost:3000/

Как запустить локально

Через 3 терминала, для нагляндности

  • yarn start:webpack:client - запуск вебпака с дев-сервером, отвечающим за клиентскую статику
  • yarn start:webpack:server - запуск вебпака, отвечающего за нодовое приложение
  • yarn start:server - запуск самого сервера

Как собрать в докер-контейнер

  • yarn build - каждый этап сборки разбит на отдельные команды.

Что всё это значит

  • yarn build:clean вызывает rm -rf ./build - удаляет папку build - там старый билд
  • yarn build:webpack запускает yarn build:webpack:client и затем yarn build:webpack:server
    • yarn build:webpack:client запускает webpack --config webpack.prod.client.config.js - продовая сборка клиентской статики
    • yarn build:webpack:server запускает webpack --config webpack.prod.server.config.js - продовая сборка серверного приложения
  • yarn build:copy запускает скрипт copy.sh, который копирует клиентскую статику и нодовые артефакты в папку с серверной сборкой
  • yarn build:packages запускает установку пакетов в продовом режиме в папку с серверной сборкой
  • yarn build:docker запускает сборку докер-образа командой docker build -f app.Dockerfile -t tfs-demo-2-server:latest .
    • docker build - сама команда запуска сборки
    • -f app.Dockerfile - указывает на файл с инструкциями для сборки образа
    • -t tfs-demo-2-server:latest - указывает на тег (название) собираемого образа
    • . - указывает на директорию, в которой запускать сборку

Как запустить собранный контейнер

  • docker run --name tfs-demo --rm -d -p 3000:3000 -e NODE_ENV=production tfs-demo-2-server:latest

Что всё это значит

  • docker run - команда запуска контейнера
  • --name tfs-demo - просто даём название контейнеру, чтобы можно было указывать его в командах, например stop или logs - без этого нужно будет указывать id контейнера
  • --rm - удаляем контейнер после остановки. Если этого не указать, то после остановки контейнер будет все ещё доступен, полезно для дебага
  • -d - запускаем контейнер как демон, то есть без привязки к текущему процессу (терминалу) и в фоне
  • -p - проброс порта 3000 из контейнера в порт 3000 на хосте. У каждого контейнера свои порты, которые никак не связаны с портами локальной машины, с помощью этого как раз связываем порт 3000 в контейнере с портом 3000 на локальной машине - все запросы на 3000 порт на локальной машине пойдут в порт 3000 в контейнере
  • -e NODE_ENV=production установит environment-переменную NODE_ENV в значение production для текущего запуска контейнера
  • tfs-demo-2-server:latest - какой образ будет запущен в контейнере. Именно этот образ и собирается командой docker build

Как остановить запущенный контейнер

  • docker stop tfs-demo

Как смотреть логи контейнера

  • docker logs -f tfs-demo

-f означает вывод логов по мере их появления, без неё он просто выведет все имеющиеся на текущий момент логи и вернет Вас к терминалу

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published