Herramientas de usuario

Herramientas del sitio


postgresql_pgadmin

¡Esta es una revisión vieja del documento!


PostgreSQL y pgAdmin

PostgreSQL es un sistema de gestión de bases de datos relacional, robusto y de código abierto, ampliamente utilizado para almacenar y administrar datos de forma segura y eficiente. En este servidor, se utiliza como base de datos principal para servicios como Nextcloud y Grafana.

pgAdmin, por su parte, es una herramienta web que permite administrar bases de datos PostgreSQL de manera visual, simplificando tareas como la creación de usuarios, bases de datos, consultas y respaldos.


Archivo docker-compose.yml

El servicio de base de datos y su entorno de administración se definen en el siguiente archivo docker-compose.yml:

services:
  pgadmin4:
    image: dpage/pgadmin4:8.10
    container_name: pgadmin4
    restart: always
    env_file:
      - .env
    environment:     
      PGADMIN_DEFAULT_EMAIL: ${PGADMIN_email}                   # Mail de acceso al portal de pgadmin
      PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_pass}                 # Contraseña de acceso al portal
    ports:
        - '9002:80'
    depends_on:                                                 
      db_postgres:
        condition: service_healthy
    volumes:                                                    
    - pgadmin_data:/var/lib/pgadmin
    - ./config/servers.json:/pgadmin4/servers.json     
    networks:                                                   
    - internal_net 
    - external_net 
 
  db_postgres:
    image: postgres:16
    container_name: postgres
    env_file:
      - .env
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "pg_isready"]
      interval: 10s
      timeout: 5s
      retries: 5
    environment:   
      POSTGRES_USER: ${POSTGRES_USER}          # Usuario de aplicacion que utilizara moodle para conectarse
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}  # Contraseña con la que se conectará
      POSTGRES_DB: ${POSTGRES_DB}              # Nombre de base de datos que se creará
    expose:                                    # Se opta por expose dado que la base de datos no puede estar de cara al usuario
      - 5432
    volumes:                                   
      - local_pgdata:/var/lib/postgresql/data
      - ./config/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh
    networks:                                  
      - internal_net
 
# Exporter de métricas
 
  postgres_exporter:
    image: prometheuscommunity/postgres-exporter:latest
    container_name: postgres_exporter
    environment:
      DATA_SOURCE_NAME: "postgresql://metricas:exporter@db_postgres:5432/${POSTGRES_DB}?sslmode=disable"
    ports:
      - "9187:9187"
    depends_on:
      - db_postgres
    networks:
      - internal_net
 
volumes:
  local_pgdata:
    driver: local
  pgadmin_data:
    driver: local
 
networks:
  internal_net:
    name: net_backend
    driver: bridge
    external: true
  external_net:
    name: net_frontend
    driver: bridge

Variables de entorno

Las variables de entorno definidas en el archivo .env permiten configurar las credenciales y parámetros de conexión de ambos servicios:

POSTGRES_USER= "USUARIO_DB"
POSTGRES_PASSWORD= "PASSWORD_DB"
POSTGRES_DB= "NOMBRE_DB"
PGADMIN_email ="EMAIL_PGADMIN"
PGADMIN_pass = "PASSWORD_PGADMIN"

Esto permite mantener las contraseñas, usuarios y configuraciones fuera del archivo docker-compose.yml, evitando exponer información sensible y facilitando cambios sin modificar el compose directamente.


Configuración init.sh

El archivo init.sh se ejecuta automáticamente la primera vez que se levanta el contenedor de PostgreSQL. Su función es crear la base de datos inicial, asignar permisos y preparar el entorno para su uso por parte de otros servicios (como Nextcloud o Grafana).

#!/bin/bash

De esta manera, las bases de datos nextcloud y grafana se crean automáticamente y quedan listas para ser utilizadas en el arranque inicial del contenedor.


Configuración de pgAdmin

Una vez desplegado el contenedor, pgAdmin queda accesible desde el navegador en la siguiente URL:

postgresql_pgadmin.1760204583.txt.gz · Última modificación: por romix