This commit is contained in:
Дмитрий Мамедов
2026-06-10 17:13:44 +03:00
parent c23cf1efdb
commit 4eb9c82b72

View File

@@ -44,7 +44,7 @@ info "Detected: ${OS} ($(uname -m))"
install_docker() {
step "1/8 Installing Docker"
if command -v docker &>/dev/null; then
info "Docker already installed ($(docker --version))"
info "Docker already installed ($($SUDO docker --version 2>/dev/null || docker --version))"
else
warn "Docker not found — installing..."
if command -v apt-get &>/dev/null; then
@@ -61,20 +61,20 @@ install_docker() {
fi
# Ensure Docker daemon is running
if ! docker info &>/dev/null; then
if ! $SUDO docker info &>/dev/null; then
warn "Starting Docker daemon..."
$SUDO systemctl enable --now docker 2>/dev/null || $SUDO dockerd &>/dev/null &
sleep 3
fi
info "Docker daemon is running"
if ! docker compose version &>/dev/null; then
if ! $SUDO docker compose version &>/dev/null; then
warn "Docker Compose not found — installing plugin..."
$SUDO mkdir -p /usr/local/lib/docker/cli-plugins
$SUDO curl -fsSL "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/lib/docker/cli-plugins/docker-compose
$SUDO chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
fi
info "Docker Compose: $(docker compose version 2>&1)"
info "Docker Compose: $($SUDO docker compose version 2>&1)"
}
# ─── 2. Node.js ─────────────────────────────────────────────────
@@ -161,7 +161,10 @@ set -a; source .env; set +a
# ─── 6. Docker infrastructure ────────────────────────────────────
step "5/8 Starting infrastructure (PostgreSQL, Redis, RabbitMQ)"
$SUDO docker compose up -d 2>&1
if ! $SUDO docker compose up -d; then
$SUDO docker compose logs 2>/dev/null | tail -20
error "Docker containers failed to start. Check '${INSTALL_DIR}/docker-compose.yml' and run '${SUDO}docker compose logs' manually."
fi
info "Waiting for PostgreSQL..."
for i in $(seq 1 30); do
@@ -169,7 +172,11 @@ for i in $(seq 1 30); do
info "PostgreSQL is ready"
break
fi
[ "$i" -eq 30 ] && error "PostgreSQL did not start in time. Check: $SUDO docker compose logs postgres"
if [ "$i" -eq 30 ]; then
warn "PostgreSQL did not become ready — showing last logs:"
$SUDO docker compose logs --tail=20 postgres 2>/dev/null || true
error "PostgreSQL did not start in time. Fix the issue and re-run the script."
fi
sleep 2
done
@@ -179,30 +186,32 @@ for i in $(seq 1 15); do
info "Redis is ready"
break
fi
[ "$i" -eq 15 ] && warn "Redis may not be ready yet, continuing..."
if [ "$i" -eq 15 ]; then
warn "Redis may not be ready yet, continuing..."
fi
sleep 2
done
# ─── 7. Dependencies & Prisma ────────────────────────────────────
step "6/8 Installing dependencies"
npm ci --no-audit --no-fund 2>&1 | tail -1
npm ci --no-audit --no-fund || error "'npm ci' failed. Check network / ${INSTALL_DIR}/package-lock.json"
info "npm dependencies installed"
npx prisma generate 2>&1 | tail -1
npx prisma generate || error "'prisma generate' failed. Check Prisma schema."
info "Prisma client generated"
export DATABASE_URL
npx prisma db push --skip-generate 2>&1
npx prisma db push --skip-generate || error "'prisma db push' failed. Is PostgreSQL running? Check connection details in ${INSTALL_DIR}/.env"
info "Database schema applied"
# ─── 8. Seed ─────────────────────────────────────────────────────
step "7/8 Seeding database"
npx ts-node -P tsconfig.json prisma/seed.ts 2>&1
npx ts-node -P tsconfig.json prisma/seed.ts || error "Seed failed. Check database connection."
info "Seed data created"
# ─── 9. Build & Start ────────────────────────────────────────────
step "8/8 Building and starting SSO Service"
npm run build 2>&1 | tail -3
npm run build || error "'npm run build' failed. Check for TypeScript errors above."
info "Application built"
if command -v pm2 &>/dev/null; then