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

81 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Монитор заявок - CleverParking
Node/Express приложение со встроенным фронтендом и SQLite. Проект подготовлен для:
- локального запуска через Docker Compose;
- автоматической сборки Docker-образа в Woodpecker;
- deploy прямо на хост, где установлен Woodpecker agent.
## Локальный запуск
```bash
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`:
```dotenv
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 сам соберёт образ на целевой машине и перезапустит контейнер.
## Полезные команды на сервере
```bash
cd /opt/intradesk-monitor
docker ps --filter name=intradesk-monitor
docker logs -f intradesk-monitor
./deploy.sh
```