59 lines
2.5 KiB
Bash
Executable File
59 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# start-dev.sh — levanta infraestructura + migraciones + servidor dev
|
|
# Uso: ./scripts/start-dev.sh
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
cd "$PROJECT_DIR"
|
|
|
|
# ── 1. Verificar Docker ─────────────────────────────────────────────────────
|
|
if ! command -v docker &>/dev/null; then
|
|
echo "Docker no encontrado. Instalo o aseguro de que este en PATH."
|
|
exit 1
|
|
fi
|
|
|
|
# ── 2. Levantar postgres y redis ────────────────────────────────────────────
|
|
echo "Levantando postgres y redis..."
|
|
docker compose up -d postgres redis
|
|
|
|
# ── 3. Esperar a que postgres responda ──────────────────────────────────────
|
|
echo "Esperando a postgres..."
|
|
MAX_WAIT=30
|
|
COUNT=0
|
|
until docker compose exec -T postgres pg_isready -U mdv &>/dev/null; do
|
|
sleep 1
|
|
COUNT=$((COUNT + 1))
|
|
if [ "$COUNT" -ge "$MAX_WAIT" ]; then
|
|
echo "postgres no respondio en ${MAX_WAIT}s"
|
|
exit 1
|
|
fi
|
|
done
|
|
echo "postgres listo"
|
|
|
|
# ── 4. Instalar dependencias ─────────────────────────────────────────────────
|
|
echo "npm install..."
|
|
npm install
|
|
|
|
# ── 5. Asegurar .env con DATABASE_URL ───────────────────────────────────────
|
|
if [ ! -f .env ]; then
|
|
echo "Creando .env con DATABASE_URL..."
|
|
cat > .env <<'EOF'
|
|
DATABASE_URL=postgres://mdv:mdv_dev_only@localhost:5432/mercadodevida
|
|
NODE_ENV=development
|
|
EOF
|
|
fi
|
|
|
|
# ── 6. Exportar variables para que los procesos hijos las tengan ───────────────
|
|
export DATABASE_URL="postgres://mdv:mdv_dev_only@localhost:5432/mercadodevida"
|
|
export NODE_ENV="development"
|
|
|
|
# ── 7. Aplicar migraciones ──────────────────────────────────────────────────
|
|
echo "Aplicando migraciones..."
|
|
npx node-pg-migrate up
|
|
|
|
# ── 8. Arrancar servidor dev ─────────────────────────────────────────────────
|
|
echo "Todo listo. Arrancando servidor dev..."
|
|
npm run start
|