Lead Radar: исходный код
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
commit
9749da5ae7
201 files changed
+97685
No files matched your search
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env bash
|
||||
# Выкладка Lead Radar на VPS: исходники → сборка образов на сервере → контейнеры.
|
||||
# Запускается НА MAC из папки leadradar: ./deploy.sh
|
||||
# Перед первым запуском на VPS должен лежать /opt/leadradar/.env (см. deploy/.env.production.example).
|
||||
set -euo pipefail
|
||||
|
||||
VPS_HOST="${VPS_HOST:-root@188.116.21.175}"
|
||||
SSH_KEY="${SSH_KEY:-$HOME/.ssh/yandp_vps}"
|
||||
REMOTE_DIR="/opt/leadradar"
|
||||
NPM_CONTAINER="nginx-proxy-manager"
|
||||
|
||||
SSH="ssh -i $SSH_KEY -o IdentitiesOnly=yes"
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
echo "→ Проверки перед выкладкой"
|
||||
pnpm typecheck
|
||||
pnpm test
|
||||
|
||||
# Файл compose проверяется здесь, а не на сервере: ошибка в нём не должна доезжать до выкладки.
|
||||
POSTGRES_PASSWORD=check APP_URL=https://check NPM_NETWORK=proxy docker compose -f deploy/docker-compose.prod.yml config -q
|
||||
|
||||
echo "→ Загрузка исходников на $VPS_HOST"
|
||||
$SSH "$VPS_HOST" "mkdir -p $REMOTE_DIR/app $REMOTE_DIR/backups"
|
||||
rsync -az --delete -e "$SSH" \
|
||||
--exclude node_modules --exclude dist --exclude data --exclude '.env' --exclude '.env.*' --exclude .git --exclude .DS_Store \
|
||||
./ "$VPS_HOST:$REMOTE_DIR/app/"
|
||||
|
||||
echo "→ Сборка и запуск на сервере"
|
||||
$SSH "$VPS_HOST" REMOTE_DIR="$REMOTE_DIR" NPM_CONTAINER="$NPM_CONTAINER" bash -s <<'REMOTE'
|
||||
set -euo pipefail
|
||||
cd "$REMOTE_DIR"
|
||||
[ -f .env ] || { echo "Нет $REMOTE_DIR/.env — создайте его по образцу app/deploy/.env.production.example"; exit 1; }
|
||||
NET=$(docker inspect "$NPM_CONTAINER" -f '{{range $k,$v := .NetworkSettings.Networks}}{{$k}}{{"\n"}}{{end}}' | head -n1)
|
||||
[ -n "$NET" ] || { echo "Не удалось определить сеть NPM"; exit 1; }
|
||||
COMPOSE="docker compose --env-file .env -f app/deploy/docker-compose.prod.yml"
|
||||
NPM_NETWORK="$NET" BACKUP_DIR="$REMOTE_DIR/backups" $COMPOSE up -d --build
|
||||
# Сервис стартует не мгновенно (миграции, запуск бота): ждём до минуты.
|
||||
for i in $(seq 1 30); do
|
||||
if docker exec "$NPM_CONTAINER" curl -sf -o /dev/null "http://leadradar-web/api/health"; then
|
||||
echo " ✓ NPM видит leadradar-web, API отвечает"
|
||||
exit 0
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
echo " ⚠ leadradar-web не отвечает — смотрите: docker logs leadradar-api"
|
||||
exit 1
|
||||
REMOTE
|
||||
echo "Готово."
|
||||
Reference in new issue
Block a user