Simplificar configuración de PostgreSQL con cadena de conexión única
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 16s

Eliminados hacks de autenticación md5 y configuración manual de pg_hba.conf.
Ahora usa NUXT_POSTGRES_URL como secret de Gitea para conexión directa.
This commit is contained in:
2025-11-22 00:31:47 -06:00
parent 2d04966388
commit 5b9445ca2d
8 changed files with 72 additions and 225 deletions

View File

@@ -17,6 +17,8 @@ jobs:
POSTGRES_USER: ${{ vars.POSTGRES_USER || 'seguidor' }}
POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD || 'seguidor_password' }}
POSTGRES_DB: ${{ vars.POSTGRES_DB || 'seguidor_lotes' }}
POSTGRES_PORT: ${{ vars.POSTGRES_PORT || '5432' }}
NUXT_POSTGRES_URL: ${{ secrets.NUXT_POSTGRES_URL || vars.NUXT_POSTGRES_URL || '' }}
steps:
- uses: actions/checkout@v3
@@ -44,37 +46,17 @@ jobs:
docker compose pull
docker compose --project-name $APP_NAME down
# Levantar solo Postgres para sincronizar auth antes de iniciar la app
docker compose --project-name $APP_NAME up -d postgres
echo "⏳ Esperando a PostgreSQL..."
for i in $(seq 1 20); do
if docker exec $APP_NAME-postgres pg_isready -U "$POSTGRES_USER" -d "$POSTGRES_DB"; then
break
fi
sleep 1
done
# Asegurar autenticación md5 y que la contraseña coincide con la env (cura volúmenes viejos)
echo "🔐 Sincronizando autenticación PostgreSQL (md5 + password)..."
ESCAPED_PASSWORD=${POSTGRES_PASSWORD//\'/\'\"\'\"\'}
docker exec -e PGPASSWORD="$POSTGRES_PASSWORD" $APP_NAME-postgres psql -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "ALTER SYSTEM SET password_encryption = 'md5';"
docker exec -e PGPASSWORD="$POSTGRES_PASSWORD" $APP_NAME-postgres psql -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "ALTER ROLE \"$POSTGRES_USER\" WITH PASSWORD '${ESCAPED_PASSWORD}';"
docker exec -e PGPASSWORD="$POSTGRES_PASSWORD" $APP_NAME-postgres psql -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "SELECT pg_reload_conf();"
# Ahora sí levantar la app
docker compose --project-name $APP_NAME up -d --remove-orphans --wait
# Inicializar base de datos si es necesario
echo "🗄️ Inicializando base de datos..."
# Verificar si las tablas existen
TABLE_EXISTS=$(docker exec $APP_NAME-postgres psql -U $POSTGRES_USER -d $POSTGRES_DB -tAc "SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'lotes');")
TABLE_EXISTS=$(docker exec -e PGPASSWORD="$POSTGRES_PASSWORD" $APP_NAME-postgres psql -U $POSTGRES_USER -d $POSTGRES_DB -tAc "SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'lotes');")
if [ "$TABLE_EXISTS" = "f" ]; then
echo "📝 Ejecutando scripts de inicialización..."
docker exec -i $APP_NAME-postgres psql -U $POSTGRES_USER -d $POSTGRES_DB < nuxt4/server/database/01_schema.sql
docker exec -i $APP_NAME-postgres psql -U $POSTGRES_USER -d $POSTGRES_DB < nuxt4/server/database/02_seed.sql
docker exec -e PGPASSWORD="$POSTGRES_PASSWORD" -i $APP_NAME-postgres psql -U $POSTGRES_USER -d $POSTGRES_DB < nuxt4/server/database/01_schema.sql
docker exec -e PGPASSWORD="$POSTGRES_PASSWORD" -i $APP_NAME-postgres psql -U $POSTGRES_USER -d $POSTGRES_DB < nuxt4/server/database/02_seed.sql
echo "✅ Base de datos inicializada"
else
echo " Base de datos ya inicializada"