После запуска приложение доступно по адресу 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
означает вывод логов по мере их появления, без неё он просто выведет все имеющиеся на текущий момент логи и вернет Вас к терминалу