Skip to content

Este proyecto proporciona una solución completa de PostgreSQL con Docker que incluye PostgreSQL y pgAdmin4, con pipeline automático de instalación de Docker y scripts de automatización

Notifications You must be signed in to change notification settings

proyectoskevinsvega/PostgreSQL-con-docker

Repository files navigation

🐳 PostgreSQL Docker - PostgreSQL + pgAdmin4 con Docker

Este proyecto proporciona una solución completa de PostgreSQL con Docker que incluye PostgreSQL y pgAdmin4, con pipeline automático de instalación de Docker y scripts de automatización.

🎯 Características Principales

  • PostgreSQL 15: Base de datos relacional de última generación
  • pgAdmin4: Panel de gestión web en http://localhost:8080
  • Prometheus: Monitoreo y métricas en http://localhost:9090
  • Grafana: Dashboards y visualización en http://localhost:3000
  • Replicación Opcional: PostgreSQL Master-Slave configurable
  • Docker Compose: Orquestación de contenedores
  • Pipeline Automático: Instalación automática de Docker
  • Scripts de Automatización: Start, stop, verify, backup
  • Configuración Optimizada: Para desarrollo y producción
  • Datos de Ejemplo: Incluye datos de prueba

🏗️ Arquitectura del Proyecto

┌─────────────────────────────────────────────────────────────┐
│                    PostgreSQL Docker                        │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────┐ │
│  │   PostgreSQL    │  │   pgAdmin4      │  │ PostgreSQL  │ │
│  │   Master        │  │   Web Panel     │  │   Replica   │ │
│  │   Port: 5432    │  │   Port: 8080    │  │ Port: 5433  │ │
│  └─────────────────┘  └─────────────────┘  └─────────────┘ │
│           │                     │                   │       │
│  ┌────────▼─────────┐  ┌────────▼─────────┐  ┌────▼─────┐ │
│  │   Prometheus     │  │   Grafana        │  │ Docker   │ │
│  │   Monitoring     │  │   Dashboards     │  │ Compose  │ │
│  │   Port: 9090     │  │   Port: 3000     │  │          │ │
│  └──────────────────┘  └──────────────────┘  └──────────┘ │
└─────────────────────────────────────────────────────────────┘

📁 Estructura del Proyecto

postgreSQL-docker/
├── docker/                     # Configuración Docker
│   ├── Dockerfile.postgresql   # Imagen personalizada PostgreSQL
│   ├── Dockerfile.pgadmin      # Imagen personalizada pgAdmin4
│   ├── postgresql.conf         # Configuración PostgreSQL
│   ├── pg_hba.conf             # Configuración autenticación
│   ├── pgadmin-servers.json    # Configuración servidores pgAdmin
│   └── init-scripts/           # Scripts de inicialización
│       ├── 01-create-databases.sh
│       ├── 02-create-extensions.sh
│       └── 03-create-sample-data.sh
├── pipeline/                   # Pipeline de instalación
│   └── install-docker.sh       # Instalación automática Docker
├── scripts/                    # Scripts de automatización
│   ├── start.sh                # Iniciar servicios
│   ├── stop.sh                 # Parar servicios
│   └── verify.sh               # Verificar funcionamiento
├── examples/                   # Aplicaciones de ejemplo
├── docs/                       # Documentación
├── docker-compose.yml          # Orquestación de contenedores
├── env.example                 # Variables de entorno
├── Makefile                    # Comandos de gestión
└── README.md                   # Este archivo

🚀 Inicio Rápido

1. Instalación Automática de Docker

# Instalar Docker automáticamente
make install

# O directamente
./pipeline/install-docker.sh

2. Iniciar Servicios

# Iniciar PostgreSQL + pgAdmin4
make start

# O directamente
./scripts/start.sh

3. Acceder a los Servicios

4. Verificar Funcionamiento

# Verificar que todo esté funcionando
make verify

# O directamente
./scripts/verify.sh

🛠️ Comandos Disponibles

Comandos Principales

make install        # Instalar Docker automáticamente
make start          # Iniciar servicios básicos (PostgreSQL + pgAdmin4)
make start-monitoring # Iniciar con monitoreo (Prometheus + Grafana)
make start-replication # Iniciar con replicación
make start-full     # Iniciar todo (PostgreSQL + Replica + Monitoreo)
make stop           # Parar servicios
make restart        # Reiniciar servicios
make status         # Ver estado
make logs           # Ver logs
make verify         # Verificar funcionamiento
make clean          # Limpiar recursos

Comandos de Monitoreo

make monitoring-start    # Iniciar servicios de monitoreo
make monitoring-stop     # Parar servicios de monitoreo
make monitoring-status   # Estado de servicios de monitoreo
make monitoring-logs     # Logs de servicios de monitoreo
make prometheus-open     # Abrir Prometheus
make grafana-open       # Abrir Grafana

Comandos de Replicación

make replication-start      # Iniciar servicios de replicación
make replication-stop        # Parar servicios de replicación
make replication-status      # Estado de servicios de replicación
make replication-logs        # Logs de servicios de replicación
make postgresql-replica-connect # Conectar a PostgreSQL Replica
make postgresql-replica-status  # Estado de replicación
make postgresql-replica-lag    # Lag de replicación

Comandos de Desarrollo

make dev-start      # Modo desarrollo
make dev-stop       # Parar desarrollo
make dev-restart    # Reiniciar desarrollo

Comandos de Base de Datos

make db-connect     # Conectar a PostgreSQL
make db-shell       # Shell de PostgreSQL
make backup         # Crear backup
make restore FILE=backup.sql  # Restaurar backup

Comandos de pgAdmin4

make pgadmin-open   # Abrir pgAdmin4
# URL: http://localhost:8080
# Email: admin@postgresql.local
# Contraseña: admin123

Comandos de Redis

make redis-connect  # Conectar a Redis

🔧 Configuración

Variables de Entorno

# Copiar archivo de ejemplo
cp env.example .env

# Editar configuración
nano .env

Configuración PostgreSQL

  • Host: localhost
  • Puerto: 5432
  • Usuario: postgres
  • Contraseña: postgres123
  • Base de datos: postgres

Configuración pgAdmin4

Configuración Redis

  • Host: localhost
  • Puerto: 6379
  • Contraseña: redis123

📊 Características Técnicas

PostgreSQL 15

  • Versión: PostgreSQL 15
  • Configuración: Optimizada para desarrollo
  • Extensiones: uuid-ossp, pg_stat_statements, pg_trgm
  • Bases de datos: postgres, development, testing, staging
  • Datos de ejemplo: Usuarios, productos, órdenes

pgAdmin4

  • Versión: Última versión
  • Interfaz: Web responsive
  • Funciones: Gestión completa de PostgreSQL
  • Seguridad: Configuración segura

Redis

  • Versión: Redis 7
  • Configuración: Persistencia habilitada
  • Uso: Caché y sesiones

🔒 Seguridad

Configuración de Red

  • Red privada: postgresql_network
  • Puertos expuestos: Solo los necesarios
  • Firewall: Configuración segura

Autenticación

  • PostgreSQL: SCRAM-SHA-256
  • pgAdmin4: Autenticación web
  • Redis: Contraseña requerida

Datos

  • Volúmenes: Datos persistentes
  • Backup: Scripts automáticos
  • Encriptación: SSL/TLS disponible

📈 Performance

Configuración Optimizada

  • shared_buffers: 256MB
  • effective_cache_size: 1GB
  • work_mem: 4MB
  • maintenance_work_mem: 64MB

Monitoreo

  • Logs: Configuración detallada
  • Métricas: pg_stat_statements
  • Health checks: Automáticos

🚨 Troubleshooting

Problemas Comunes

Docker no está instalado

# Instalar Docker automáticamente
make install

Servicios no inician

# Verificar logs
make logs

# Reiniciar servicios
make restart

No se puede conectar a PostgreSQL

# Verificar estado
make status

# Verificar puertos
netstat -tuln | grep 5432

pgAdmin4 no carga

# Verificar que esté funcionando
curl http://localhost:8080

# Ver logs
docker logs pgadmin4-web

Comandos de Diagnóstico

# Ver estado de contenedores
make status

# Ver logs de servicios
make logs

# Verificar funcionamiento
make verify

# Ver información del sistema
make system-info

📚 Casos de Uso

Desarrollo Local

# Iniciar entorno de desarrollo
make dev-start

# Conectar a base de datos
make db-connect

# Abrir pgAdmin4
make pgadmin-open

Testing

# Iniciar para testing
make test-start

# Ejecutar tests
make verify

# Parar testing
make test-stop

Producción

# Iniciar en producción
make prod-start

# Crear backup
make backup

# Monitorear
make monitor

🔄 Backup y Restore

Crear Backup

# Backup automático
make backup

# Backup manual
docker exec postgresql-db pg_dumpall -U postgres > backup.sql

Restaurar Backup

# Restaurar backup
make restore FILE=backup.sql

# Restaurar manual
docker exec -i postgresql-db psql -U postgres < backup.sql

📋 Checklist de Implementación

Pre-requisitos

  • Sistema operativo soportado
  • Permisos de administrador
  • Conexión a internet
  • Puertos 5432, 8080, 6379 disponibles

Instalación

  • Docker instalado automáticamente
  • Docker Compose disponible
  • Imágenes construidas
  • Servicios iniciados

Verificación

  • PostgreSQL funcionando
  • pgAdmin4 accesible
  • Redis funcionando
  • Datos de ejemplo creados

🎯 Ventajas del Proyecto

Facilidad de Uso

  • Instalación automática: Docker se instala automáticamente
  • Scripts simples: Comandos fáciles de usar
  • Documentación completa: Guías paso a paso

Configuración Profesional

  • PostgreSQL optimizado: Configuración para desarrollo
  • pgAdmin4 configurado: Panel de gestión listo
  • Redis incluido: Caché y sesiones

Automatización

  • Pipeline de instalación: Docker automático
  • Scripts de gestión: Start, stop, verify
  • Backup automático: Datos seguros

Flexibilidad

  • Múltiples entornos: Dev, staging, prod
  • Configuración personalizable: Variables de entorno
  • Extensiones: PostgreSQL extendido

📚 Recursos Adicionales

Documentación Oficial

Herramientas y Utilidades

Comunidad y Soporte


Características clave:

  • ✅ Instalación automática de Docker
  • ✅ PostgreSQL 15 optimizado
  • ✅ pgAdmin4 web panel
  • ✅ Redis para caché
  • ✅ Scripts de automatización
  • ✅ Configuración profesional
  • ✅ Datos de ejemplo incluidos
  • ✅ Backup y restore automático

About

Este proyecto proporciona una solución completa de PostgreSQL con Docker que incluye PostgreSQL y pgAdmin4, con pipeline automático de instalación de Docker y scripts de automatización

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published