4.4 KiB
Монитор заявок — CleverParking
Node/Express приложение со встроенным фронтендом и SQLite.
Образ собирается в Woodpecker CI, публикуется в Forgejo registry и деплоится на сервер через Docker socket на агенте с меткой role=work_woodpecker.
Локальный запуск
cp .env.example .env
# Отредактировать .env под себя
docker compose up -d --build
Compose собирает образ из текущего каталога, данные SQLite хранятся в ./data.
Первоначальная настройка сервера
Выполняется один раз вручную перед первым деплоем через CI.
1. Установить Docker
curl -fsSL https://get.docker.com | sh
Проверить:
docker version
docker compose version
2. Создать рабочий каталог и файлы
mkdir -p /opt/intradesk-monitor/data
cd /opt/intradesk-monitor
Создать docker-compose.yml:
cat > docker-compose.yml << 'EOF'
services:
intradesk-monitor:
image: git.example.com/user/intradesk-monitor:latest
container_name: intradesk-monitor
restart: always
env_file: .env
ports:
- "${APP_PORT:-3000}:3000"
volumes:
- ./data:/data
environment:
NODE_ENV: production
PORT: 3000
DB_PATH: /data/intradesk.db
healthcheck:
test: ["CMD", "node", "-e", "const http=require('http');const req=http.get('http://127.0.0.1:3000/healthz',res=>process.exit(res.statusCode===200?0:1));req.on('error',()=>process.exit(1));"]
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
EOF
Заменить
git.example.com/user/intradesk-monitorна актуальный путь образа.
3. Создать .env
# Сгенерировать секреты
JWT_SECRET=$(openssl rand -hex 32)
ADMIN_SECRET=$(openssl rand -hex 32)
cat > /opt/intradesk-monitor/.env << EOF
JWT_SECRET=${JWT_SECRET}
ADMIN_SECRET=${ADMIN_SECRET}
APP_PORT=3000
EOF
Проверить:
cat /opt/intradesk-monitor/.env
4. Авторизоваться в Forgejo registry
Чтобы сервер мог скачать образ при docker compose pull:
docker login git.example.com
Ввести логин и токен с правом package:read.
Учётные данные сохраняются в ~/.docker/config.json и используются автоматически при каждом pull.
5. Проверить вручную до первого CI-деплоя
cd /opt/intradesk-monitor
docker compose pull
docker compose up -d
docker compose ps
docker compose logs -f
Если контейнер поднялся и healthcheck зелёный — сервер готов принимать деплои от CI.
Секреты Woodpecker
Добавить в Settings → Secrets репозитория:
| Секрет | Значение |
|---|---|
forgejo_host |
хост registry, например git.example.com |
forgejo_image |
полный путь образа, например git.example.com/user/intradesk-monitor |
forgejo_username |
логин пользователя Forgejo |
forgejo_token |
токен с правом package:write |
Что делает pipeline
.woodpecker.yml содержит три шага:
docker-build— сборка и push теговlatestиsha-<shortsha>при push вmaindocker-build-tag— сборка и push git-тега,latestиsha-<shortsha>при событииtagdeploy— на сервере делаетdocker compose pull+up -dчерез Docker socket; агент с меткойrole=work_woodpecker
Полезные команды на сервере
cd /opt/intradesk-monitor
# Статус и логи
docker compose ps
docker compose logs -f
# Откат на предыдущий образ
docker compose stop
docker compose run --rm intradesk-monitor docker tag $(cat .previous_image) intradesk-monitor:rollback
docker compose up -d