commit 6
This commit is contained in:
33
install.sh
33
install.sh
@@ -44,7 +44,7 @@ info "Detected: ${OS} ($(uname -m))"
|
|||||||
install_docker() {
|
install_docker() {
|
||||||
step "1/8 Installing Docker"
|
step "1/8 Installing Docker"
|
||||||
if command -v docker &>/dev/null; then
|
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
|
else
|
||||||
warn "Docker not found — installing..."
|
warn "Docker not found — installing..."
|
||||||
if command -v apt-get &>/dev/null; then
|
if command -v apt-get &>/dev/null; then
|
||||||
@@ -61,20 +61,20 @@ install_docker() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Ensure Docker daemon is running
|
# Ensure Docker daemon is running
|
||||||
if ! docker info &>/dev/null; then
|
if ! $SUDO docker info &>/dev/null; then
|
||||||
warn "Starting Docker daemon..."
|
warn "Starting Docker daemon..."
|
||||||
$SUDO systemctl enable --now docker 2>/dev/null || $SUDO dockerd &>/dev/null &
|
$SUDO systemctl enable --now docker 2>/dev/null || $SUDO dockerd &>/dev/null &
|
||||||
sleep 3
|
sleep 3
|
||||||
fi
|
fi
|
||||||
info "Docker daemon is running"
|
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..."
|
warn "Docker Compose not found — installing plugin..."
|
||||||
$SUDO mkdir -p /usr/local/lib/docker/cli-plugins
|
$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 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
|
$SUDO chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
|
||||||
fi
|
fi
|
||||||
info "Docker Compose: $(docker compose version 2>&1)"
|
info "Docker Compose: $($SUDO docker compose version 2>&1)"
|
||||||
}
|
}
|
||||||
|
|
||||||
# ─── 2. Node.js ─────────────────────────────────────────────────
|
# ─── 2. Node.js ─────────────────────────────────────────────────
|
||||||
@@ -161,7 +161,10 @@ set -a; source .env; set +a
|
|||||||
|
|
||||||
# ─── 6. Docker infrastructure ────────────────────────────────────
|
# ─── 6. Docker infrastructure ────────────────────────────────────
|
||||||
step "5/8 Starting infrastructure (PostgreSQL, Redis, RabbitMQ)"
|
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..."
|
info "Waiting for PostgreSQL..."
|
||||||
for i in $(seq 1 30); do
|
for i in $(seq 1 30); do
|
||||||
@@ -169,7 +172,11 @@ for i in $(seq 1 30); do
|
|||||||
info "PostgreSQL is ready"
|
info "PostgreSQL is ready"
|
||||||
break
|
break
|
||||||
fi
|
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
|
sleep 2
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -179,30 +186,32 @@ for i in $(seq 1 15); do
|
|||||||
info "Redis is ready"
|
info "Redis is ready"
|
||||||
break
|
break
|
||||||
fi
|
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
|
sleep 2
|
||||||
done
|
done
|
||||||
|
|
||||||
# ─── 7. Dependencies & Prisma ────────────────────────────────────
|
# ─── 7. Dependencies & Prisma ────────────────────────────────────
|
||||||
step "6/8 Installing dependencies"
|
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"
|
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"
|
info "Prisma client generated"
|
||||||
|
|
||||||
export DATABASE_URL
|
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"
|
info "Database schema applied"
|
||||||
|
|
||||||
# ─── 8. Seed ─────────────────────────────────────────────────────
|
# ─── 8. Seed ─────────────────────────────────────────────────────
|
||||||
step "7/8 Seeding database"
|
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"
|
info "Seed data created"
|
||||||
|
|
||||||
# ─── 9. Build & Start ────────────────────────────────────────────
|
# ─── 9. Build & Start ────────────────────────────────────────────
|
||||||
step "8/8 Building and starting SSO Service"
|
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"
|
info "Application built"
|
||||||
|
|
||||||
if command -v pm2 &>/dev/null; then
|
if command -v pm2 &>/dev/null; then
|
||||||
|
|||||||
Reference in New Issue
Block a user