added v0 ci/cd
This commit is contained in:
87
scripts/first-deploy.sh
Executable file
87
scripts/first-deploy.sh
Executable file
@@ -0,0 +1,87 @@
|
||||
#!/usr/bin/env bash
|
||||
# Run this ONCE on the server to bootstrap the biztaghavi app.
|
||||
# Usage: bash scripts/first-deploy.sh
|
||||
set -euo pipefail
|
||||
|
||||
APP_NAME="biztaghavi"
|
||||
APP_DIR="/srv/nodecloud/apps/$APP_NAME"
|
||||
REPO_URL="https://git.nodecloud.ir/biztaghavi/biztaghavisite.git"
|
||||
NGINX_CONF="/etc/nginx/sites-available/$APP_NAME"
|
||||
PORT=3009
|
||||
|
||||
echo ""
|
||||
echo "╔══════════════════════════════════════════╗"
|
||||
echo "║ biztaghavi — First Deploy Bootstrap ║"
|
||||
echo "╚══════════════════════════════════════════╝"
|
||||
echo ""
|
||||
|
||||
# ── 1. App directory ─────────────────────────────────────────────────────────
|
||||
if [ -d "$APP_DIR/.git" ]; then
|
||||
echo "[1/7] App directory already exists — skipping clone, pulling latest..."
|
||||
cd "$APP_DIR" && git pull origin main
|
||||
else
|
||||
echo "[1/7] Creating $APP_DIR and cloning repository..."
|
||||
mkdir -p "$APP_DIR"
|
||||
git clone "$REPO_URL" "$APP_DIR"
|
||||
cd "$APP_DIR"
|
||||
fi
|
||||
|
||||
# ── 2. Docker network ─────────────────────────────────────────────────────────
|
||||
echo "[2/7] Ensuring nodecloud-net Docker network exists..."
|
||||
docker network inspect nodecloud-net >/dev/null 2>&1 \
|
||||
&& echo " nodecloud-net already exists" \
|
||||
|| docker network create nodecloud-net
|
||||
|
||||
# ── 3. Environment file ───────────────────────────────────────────────────────
|
||||
echo "[3/7] Setting up .env file..."
|
||||
if [ -f "$APP_DIR/.env" ]; then
|
||||
echo " .env already exists — skipping"
|
||||
else
|
||||
cp "$APP_DIR/.env.example" "$APP_DIR/.env"
|
||||
echo ""
|
||||
echo " ⚠️ IMPORTANT: Edit $APP_DIR/.env before continuing!"
|
||||
echo " At minimum set: DB_ROOT_PASSWORD, DB_PASSWORD, SESSION_SECRET, SETUP_KEY"
|
||||
echo ""
|
||||
read -rp " Press ENTER after you have filled in .env values... "
|
||||
fi
|
||||
|
||||
# ── 4. Nginx config ───────────────────────────────────────────────────────────
|
||||
echo "[4/7] Installing Nginx config..."
|
||||
cp "$APP_DIR/nginx/$APP_NAME.conf" "$NGINX_CONF"
|
||||
ln -sf "$NGINX_CONF" "/etc/nginx/sites-enabled/$APP_NAME"
|
||||
echo " Testing Nginx config..."
|
||||
nginx -t
|
||||
systemctl reload nginx
|
||||
echo " Nginx reloaded"
|
||||
|
||||
# ── 5. Build & start containers ───────────────────────────────────────────────
|
||||
echo "[5/7] Building Docker image (this takes a few minutes)..."
|
||||
cd "$APP_DIR"
|
||||
docker compose build
|
||||
|
||||
echo "[6/7] Starting services..."
|
||||
docker compose up -d
|
||||
|
||||
# ── 6. Wait for health ────────────────────────────────────────────────────────
|
||||
echo "[7/7] Waiting for app to become healthy..."
|
||||
for i in $(seq 1 24); do
|
||||
if curl -sf http://127.0.0.1:$PORT/ -o /dev/null 2>&1; then
|
||||
echo ""
|
||||
echo "✅ App is up at http://127.0.0.1:$PORT"
|
||||
break
|
||||
fi
|
||||
printf "."
|
||||
sleep 5
|
||||
done
|
||||
echo ""
|
||||
|
||||
# ── 7. Summary ────────────────────────────────────────────────────────────────
|
||||
echo ""
|
||||
echo "══════════════════════════════════════════"
|
||||
echo " Next steps:"
|
||||
echo " 1. Point DNS A record for biztaghavi.com → 193.105.234.35"
|
||||
echo " 2. Issue SSL: certbot --nginx -d biztaghavi.com -d www.biztaghavi.com"
|
||||
echo " 3. Add Gitea secrets (see DEPLOY.md)"
|
||||
echo "══════════════════════════════════════════"
|
||||
echo ""
|
||||
docker compose ps
|
||||
Reference in New Issue
Block a user