intra_monitor/README.md
2026-03-18 14:19:29 +03:00

3.6 KiB
Raw Blame History

Монитор заявок - CleverParking

Node/Express приложение со встроенным фронтендом и SQLite. Проект подготовлен для:

  • локального запуска через Docker Compose;
  • автоматической сборки Docker-образа в Woodpecker;
  • deploy прямо на хост, где установлен Woodpecker agent.

Локальный запуск

cp .env.example .env
docker compose up -d --build

Приложение будет доступно на http://localhost:3000, а база SQLite сохранится в папке ./data.

Что добавлено для production

  • Dockerfile с production NODE_ENV и HEALTHCHECK;
  • /healthz endpoint для проверки контейнера;
  • fail-fast проверка JWT_SECRET и ADMIN_SECRET в production;
  • docker-compose.deploy.yml для запуска заранее собранного локального образа;
  • .woodpecker.yml для сборки и deploy на хосте агента;
  • deploy/remote-deploy.sh и deploy.sh для повторного запуска того же сценария уже на сервере.

Как теперь работает deploy

  1. Woodpecker забирает код из Git.
  2. На push в default branch step deploy запускается на агенте, который стоит на целевой машине.
  3. Step собирает локальный образ intradesk-monitor:$CI_COMMIT_SHA и тег latest.
  4. В /opt/intradesk-monitor копируются deploy-файлы из репозитория.
  5. Затем выполняется docker compose up -d уже с локально собранным образом.

Registry и SSH для такого сценария не нужны.

Что нужно на машине с агентом

  • установленный Docker с docker compose;
  • Woodpecker agent на этой же машине;
  • каталог /opt/intradesk-monitor;
  • файл /opt/intradesk-monitor/.env;
  • доверенный (trusted) репозиторий в Woodpecker, потому что pipeline использует bind-mount хостовых путей и Docker socket.

Пример /opt/intradesk-monitor/.env:

JWT_SECRET=long_random_secret
ADMIN_SECRET=another_long_secret
APP_PORT=3000

PORT и DB_PATH в production задаются через compose автоматически.

Настройка агента

Текущий .woodpecker.yml ожидает, что на хосте доступны:

  • /var/run/docker.sock
  • /opt/intradesk-monitor

Если у тебя несколько агентов, добавь на нужный агент собственный label и раскомментируй блок labels в .woodpecker.yml, чтобы deploy уходил строго на нужную машину.

Первый деплой

  1. Создать каталог /opt/intradesk-monitor.
  2. Положить в него .env.
  3. Убедиться, что агент Woodpecker может работать с Docker на хосте.
  4. Пометить репозиторий как trusted в Woodpecker.
  5. Запушить изменения в default branch.

После этого Woodpecker сам соберёт образ на целевой машине и перезапустит контейнер.

Полезные команды на сервере

cd /opt/intradesk-monitor
docker ps --filter name=intradesk-monitor
docker logs -f intradesk-monitor
./deploy.sh