### Stocks Backend stocks v0.1 Repository name: `em-shop` -------------------------------------------------------------------- *cheat sheet:* ```sh # Запуск сервера в production mode: sudo bash run.prod.sh sudo docker compose up -d --build --force-recreate # Запуск сервера в development mode: sudo bash run.dev.sh sudo docker compose -f docker-compose.dev.yml up --build --force-recreate # Подключение к консоли контейнера: sudo docker exec -it stocks sh sudo docker exec -it stocks-dev sh sudo docker start stocks sudo docker stop stocks sudo docker start stocks-dev sudo docker stop stocks-dev ``` -------------------------------------------------------------------- #### Общие сведения Для успешного запуска и функционирования требуются следующий файл конфигурации: ```yml env_file: - ./config.env ``` В `config.env` указываюся переменные: (Используйте эти значения только для разработки) ```conf PORT=3001 URL=/stocks/api POSTGRES_HOST=postgres POSTGRES_PORT=5432 POSTGRES_USER=postgres POSTGRES_DB=postgres POSTGRES_PASSWORD=2wroxrnr8fdxicvw2nsd RABBITMQ_HOST=rabbitmq RABBITMQ_PORT=5672 RABBITMQ_USER=rabbit RABBITMQ_PASSWORD=5jbya3ptfrezyop6gy8w RABBITMQ_VHOST=vrabbit ``` #### Production mode: Режим запуска сервера по умолчанию. Конфигурация описана в `docker-compose.yml` Запуск сервера осуществляется простой командой: `docker compose up -d` После изменений в образе, запуск производится с пересборкой образа: `docker compose up -d --build --force-recreate` Для быстрого удобного запуска предусмотрен `скрипт run.prod.sh`, который выполняет команду выше. *Пояснения:* Запуск производится по средствам выполнения в образе команды: `command: ["node", "src/index.js"]` #### Development mode: Запуск сервера в режиме разработки. Требуется указать соответствующий образ: `docker compose -f docker-compose.dev.yml up -d` После изменений в образе, запуск производится с пересборкой образа: `docker compose -f docker-compose.dev.yml up -d --build --force-recreate` Для быстрого удобного запуска предусмотрен скрипт `run.dev.sh`, который выполняет команду выше. *Пояснения:* Запуск производится по средствам выполнения в образе команды: `command: sh -c "npm install && npm run start:dev"` `start:dev` описана в `package.json` и содержит следующую команду: `nodemon ./src/index.js` причем, перед запуском сервера выполняется установка `npm install`, что необходимо для корректного прозрачного отображения папки `node_modules` в каталоге, что бы в процессе разработки у IDE был доступ к этой папке для корректного анализа, и подсветки кода в IDE. Так же, весь каталог с репозиторием монтируется в режиме записи в как корневой `/app` в Docker контейнере: ```yml volumes: - .:/app:rw ``` что необходимо для внесения изменений в код без пересборки контейнера. В `profuction` режиме сборка осуществляется обычно, `node_modules` и все файлы находятся внутри образа, никаких дополнительных команд, volumes, не используется.