/ opencodehub / docker-entrypoint.sh
swadhinbiswas feat(enterprise): add SAML 2.0, SCIM 2.0, OCI Registry, NPM package engine & Docker Hub release workflow · 7/30/2026
0257552
52 lines · 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/bin/bash
set -e

echo "╔══════════════════════════════════════════╗"
echo "║      OpenCodeHub Starting...             ║"
echo "╚══════════════════════════════════════════╝"

# ── Wait for database ────────────────────────────────────────
if [ -n "$DATABASE_URL" ]; then
  echo "⏳ Waiting for database..."
  for i in $(seq 1 30); do
    if bun -e "
      const pg = require('pg');
      const client = new pg.Client(process.env.DATABASE_URL);
      client.connect().then(() => { client.end(); process.exit(0); }).catch(() => process.exit(1));
    " 2>/dev/null; then
      echo "✅ Database is ready"
      break
    fi
    if [ "$i" -eq 30 ]; then
      echo "⚠️  Database not reachable after 30s, proceeding anyway..."
    fi
    sleep 1
  done

  # Run database migrations
  echo "🔄 Running database migrations..."
  cd /app
  # Generate migration files if they don't exist yet (safe — only creates new ones)
  if [ ! -d "/app/drizzle" ]; then
    echo "📝 Generating initial migration files..."
    bunx drizzle-kit generate 2>/dev/null || echo "⚠️  Migration generation skipped"
  fi
  # Apply pending migrations (safe — never drops columns/tables like push --force)
  bunx drizzle-kit migrate 2>/dev/null || echo "⚠️  Migration apply skipped (may already be up to date)"
  echo "✅ Migrations complete"
fi

# ── Initialize SSH host key ──────────────────────────────────
if [ -n "$SSH_HOST_KEY_PATH" ] && [ ! -f "$SSH_HOST_KEY_PATH" ]; then
  echo "🔑 Generating SSH host key..."
  ssh-keygen -t ed25519 -f "$SSH_HOST_KEY_PATH" -N "" -q
  echo "✅ SSH host key generated"
fi

# ── Create required directories ──────────────────────────────
mkdir -p "${REPOS_PATH:-/data/repos}" "${STORAGE_PATH:-/data/storage}" "${CACHE_PATH:-/data/cache}"
mkdir -p "$(dirname "${LOG_FILE:-/data/logs/opencodehub.log}")"

echo "🚀 Starting OpenCodeHub on port ${PORT:-4321}..."
exec bun ./dist/server/entry.mjs