No description
| deploy | ||
| public | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| .woodpecker.yml | ||
| deploy.sh | ||
| docker-compose.deploy.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| package.json | ||
| README.md | ||
| server.js | ||
| start.sh | ||
Монитор заявок - 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с productionNODE_ENVиHEALTHCHECK;/healthzendpoint для проверки контейнера;- fail-fast проверка
JWT_SECRETиADMIN_SECRETв production; docker-compose.deploy.ymlдля запуска заранее собранного локального образа;.woodpecker.ymlдля сборки и deploy на хосте агента;deploy/remote-deploy.shиdeploy.shдля повторного запуска того же сценария уже на сервере.
Как теперь работает deploy
- Woodpecker забирает код из Git.
- На push в default branch step
deployзапускается на агенте, который стоит на целевой машине. - Step собирает локальный образ
intradesk-monitor:$CI_COMMIT_SHAи тегlatest. - В
/opt/intradesk-monitorкопируются deploy-файлы из репозитория. - Затем выполняется
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 уходил строго на нужную машину.
Первый деплой
- Создать каталог
/opt/intradesk-monitor. - Положить в него
.env. - Убедиться, что агент Woodpecker может работать с Docker на хосте.
- Пометить репозиторий как
trustedв Woodpecker. - Запушить изменения в default branch.
После этого Woodpecker сам соберёт образ на целевой машине и перезапустит контейнер.
Полезные команды на сервере
cd /opt/intradesk-monitor
docker ps --filter name=intradesk-monitor
docker logs -f intradesk-monitor
./deploy.sh