commit 6
This commit is contained in:
33
install.sh
33
install.sh
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user