DOCKER - POSTGRESQL

🐧¡Bienvenido a esta guía donde implementaremos POSTRESQL y PGADMIN con Docker en Ubuntu Server 24.04!🐋

Introducción

En esta práctica, implementaremos un entorno de base de datos PostgreSQL y su herramienta de administración pgAdmin utilizando Docker Compose. Configuraremos PostgreSQL y pgAdmin para ser accesibles desde el navegador web y también desde una aplicación de escritorio pgAdmin instalada en los equipos cliente. Además, configuraremos un servidor DNS para resolver el dominio pgadmin.docker.local, permitiendo una fácil resolución de nombres desde los equipos cliente.

Resumen detallado:

1.    Preparativos Iniciales:

o    Aseguraremos que Docker y Docker Compose estén instalados en nuestro sistema.

o    Crearemos un directorio para nuestro proyecto PostgreSQL y pgAdmin, y nos posicionaremos en él.

2.    Configuración de Docker Compose:

o    Crearemos un archivo docker-compose.yml para definir dos servicios: PostgreSQL y pgAdmin.

o    Configuraremos los volúmenes para persistir los datos de PostgreSQL y pgAdmin.

3.    Levantamiento de los Servicios:

o    Utilizaremos Docker Compose para levantar los servicios PostgreSQL y pgAdmin.

o    Verificaremos que ambos servicios estén funcionando correctamente.

4.    Configuración de pgAdmin en el Navegador:

o    Accederemos a pgAdmin a través del navegador utilizando la dirección IP del servidor.

o    Configuraremos la conexión a la base de datos PostgreSQL dentro de pgAdmin.

5.    Configuración de pgAdmin Desktop en Equipos Cliente:

o    Instalaremos pgAdmin Desktop en los equipos cliente.

o    Configuraremos la conexión a la base de datos PostgreSQL desde pgAdmin Desktop.

o    Crearemos un rol de login para el usuario cliente dentro de la base de datos.

6.    Configuración del Servidor DNS:

o    Añadiremos el nombre de dominio pgadmin.docker.local a nuestro servidor DNS.

o    Verificaremos que los equipos clientes puedan resolver el dominio pgadmin.docker.local correctamente.

7.    Pruebas y Verificación:

o    Realizaremos pruebas de conexión desde pgAdmin Desktop en los equipos cliente para asegurar que la base de datos PostgreSQL sea accesible.

o    Probaremos la creación y administración de bases de datos y roles desde pgAdmin tanto en el navegador como en la aplicación de escritorio.

o    Verificaremos la resolución del dominio pgadmin.docker.local desde los equipos cliente.

Conclusión

Al finalizar esta práctica, habremos configurado y desplegado un entorno de base de datos PostgreSQL y su herramienta de administración pgAdmin utilizando Docker Compose. Habremos configurado pgAdmin para ser accesible tanto desde el navegador web como desde una aplicación de escritorio en los equipos cliente. Además, habremos añadido el nombre de dominio pgadmin.docker.local a nuestro servidor DNS para facilitar la resolución de nombres. Esta práctica nos permitirá comprender cómo implementar y administrar bases de datos PostgreSQL en un entorno Docker, así como cómo configurar herramientas de administración para acceder y gestionar estas bases de datos de forma remota.

La estructura de red empleada en la práctica es la siguiente.

En esta práctica aprenderás a utilizar Docker Compose para implementar dos servicios: PostgreSQL y pgAdmin, permitiendo la administración de la base de datos desde el navegador. Configuraremos un archivo Docker Compose para definir ambos servicios y sus respectivas configuraciones. Luego, en los equipos cliente, instalaremos pgAdmin versión desktop para conectarnos y administrar la base de datos de forma remota. Crearemos un rol de login para los usuarios cliente, facilitando el acceso controlado a la base de datos. Además, configuraremos el DNS para que los equipos cliente puedan resolver el dominio pgadmin.docker.local y acceder a pgAdmin web. Esta práctica proporcionará experiencia en la configuración de bases de datos con Docker, administración remota con pgAdmin y la integración con DNS.



Pero antes, veamos detalladamente cada una de las herramientas empleadas. 

Docker es una plataforma de código abierto que permite el desarrollo, el envío y la ejecución de aplicaciones dentro de contenedores. Un contenedor es una unidad de software que empaqueta código y todas sus dependencias, como bibliotecas y configuraciones, en un único entorno autosuficiente que se puede mover fácilmente entre sistemas operativos y entornos de desarrollo.

Explicación detallada de los componentes y conceptos clave de Docker:

  1. Contenedor: Es la unidad fundamental de Docker. Un contenedor es una instancia ejecutable de un ambiente de software que incluye todo lo necesario para ejecutar una aplicación: el código, las bibliotecas, las herramientas de tiempo de ejecución y las dependencias. Los contenedores son ligeros, portátiles y se ejecutan de manera aislada del entorno host.
  2. Imagen de Docker: Una imagen es un paquete estático y autocontenido que contiene todo lo necesario para ejecutar una aplicación, incluyendo el código, las bibliotecas y otras dependencias. Las imágenes se utilizan como plantillas para crear contenedores. Pueden ser compartidas y distribuidas a través de repositorios, lo que facilita la colaboración y el despliegue de aplicaciones.
  3. Dockerfile: Es un archivo de texto plano que contiene las instrucciones para construir una imagen de Docker. El Dockerfile especifica qué comandos se deben ejecutar para configurar el entorno de ejecución de la aplicación, como la instalación de dependencias, la configuración del entorno de ejecución y la definición de puntos de entrada.
  4. Docker Engine: Es el componente principal de Docker que gestiona la creación, ejecución y gestión de contenedores. El Docker Engine incluye un demonio de fondo (dockerd) que se ejecuta en el host y una interfaz de línea de comandos (CLI) que permite a los usuarios interactuar con el demonio y controlar los contenedores.
  5. Docker Hub: Es un servicio en la nube que proporciona un repositorio centralizado de imágenes de Docker públicas y privadas. Los usuarios pueden buscar, descargar y compartir imágenes a través de Docker Hub, lo que facilita el intercambio de aplicaciones y componentes de software.
  6. Orquestación de contenedores: Docker Swarm y Kubernetes son herramientas de orquestación que permiten gestionar y escalar automáticamente contenedores en un entorno de producción. Estas herramientas proporcionan características como la alta disponibilidad, la escalabilidad automática, el balanceo de carga y la gestión de la configuración para aplicaciones distribuidas.

Por lo tanto, Docker simplifica el desarrollo de software al proporcionar una plataforma estándar para empaquetar, distribuir y ejecutar aplicaciones en contenedores. Esto permite a los desarrolladores crear aplicaciones consistentes y portátiles que se pueden ejecutar en cualquier entorno compatible con Docker, desde un portátil de desarrollo hasta un clúster de servidores en la nube.

VENTAJAS

El uso de Docker ofrece varias ventajas significativas para los desarrolladores, los equipos de operaciones de TI y las organizaciones en general.

Ventajas clave:

  1. Portabilidad: Los contenedores Docker son ligeros y portátiles, lo que significa que una aplicación empaquetada en un contenedor se puede ejecutar de manera consistente en cualquier entorno que admita Docker, ya sea un entorno de desarrollo local, un servidor de pruebas o un clúster de servidores en la nube. Esto simplifica la configuración y la gestión del entorno de ejecución de la aplicación, reduciendo los problemas de compatibilidad entre diferentes sistemas operativos y configuraciones.
  2. Aislamiento: Los contenedores Docker proporcionan un alto nivel de aislamiento, lo que significa que cada contenedor ejecuta su propia instancia de la aplicación de forma independiente del entorno del host y de otros contenedores. Esto garantiza que las aplicaciones sean seguras y no interfieran entre sí, lo que reduce el riesgo de conflictos y problemas de dependencia.
  3. Escalabilidad: Docker facilita la escalabilidad horizontal de las aplicaciones, lo que permite aumentar o reducir dinámicamente el número de contenedores en función de la carga de trabajo. Esto se logra fácilmente mediante herramientas de orquestación como Docker Swarm o Kubernetes, que automatizan la implementación, el escalado y la gestión de contenedores en entornos de producción.
  4. Eficiencia de recursos: Los contenedores Docker comparten el mismo kernel del sistema operativo subyacente, lo que los hace más eficientes en términos de uso de recursos en comparación con las máquinas virtuales tradicionales. Esto permite ejecutar múltiples contenedores en un mismo host sin incurrir en la sobrecarga de recursos asociada con la virtualización de hardware.
  5. Despliegue rápido: Docker simplifica el proceso de despliegue de aplicaciones al proporcionar un entorno de desarrollo consistente desde la etapa de desarrollo hasta la producción. Los contenedores Docker pueden ser creados, desplegados y escalados rápidamente, lo que acelera el tiempo de comercialización y facilita la entrega continua de software.
  6. Gestión de dependencias: Docker permite empaquetar todas las dependencias de una aplicación dentro de un contenedor, lo que elimina los problemas de dependencia y las inconsistencias de versiones entre diferentes entornos. Esto simplifica la gestión de dependencias y facilita la reproducibilidad del entorno de desarrollo.

El uso de Docker proporciona una forma eficiente, portátil y escalable de empaquetar, distribuir y ejecutar aplicaciones, lo que facilita el desarrollo de software moderno y la gestión de infraestructuras de TI.

Docker Compose es una herramienta que permite definir y gestionar aplicaciones Docker multi-contenedor de forma sencilla y declarativa. En esencia, Docker Compose simplifica la gestión de múltiples contenedores Docker que trabajan juntos como una sola aplicación.

Explicación detallada de Docker Compose y cómo funciona:

  1. Definición de la aplicación en un archivo YAML: Con Docker Compose, defines la configuración de tu aplicación en un archivo YAML llamado docker-compose.yml. En este archivo, especificas los servicios de contenedor que componen tu aplicación, así como sus configuraciones, dependencias y cómo se comunican entre sí.
  2. Servicios y contenedores: En el archivo docker-compose.yml, defines cada servicio de la aplicación como un contenedor Docker separado. Cada servicio representa un componente de la aplicación, como una base de datos, un servidor web, un servidor de aplicaciones, etc. Puedes configurar cada servicio con parámetros como la imagen Docker a utilizar, los volúmenes, los puertos expuestos y las variables de entorno.
  3. Declaratividad y simplificación: Docker Compose proporciona una forma declarativa de definir la arquitectura de tu aplicación, lo que significa que describes cómo debe ser la aplicación en lugar de preocuparte por los detalles de implementación. Esto simplifica la gestión de la infraestructura y facilita la colaboración entre equipos de desarrollo y operaciones.
  4. Interconexión de servicios: Docker Compose facilita la conexión y la comunicación entre los servicios de la aplicación mediante la definición de redes de contenedores. Puedes crear redes personalizadas para tus servicios y especificar cómo se comunican entre sí, lo que permite construir aplicaciones distribuidas y microservicios.
  5. Gestión de ciclos de vida: Con Docker Compose, puedes gestionar fácilmente el ciclo de vida de tu aplicación, incluyendo la creación, inicio, parada y eliminación de contenedores. La CLI de Docker Compose proporciona comandos simples para administrar la aplicación y realizar tareas comunes como la construcción de imágenes, el inicio de servicios y la gestión de volúmenes.
  6. Entornos de desarrollo consistentes: Docker Compose es especialmente útil para entornos de desarrollo, donde necesitas configurar rápidamente un entorno de desarrollo local consistente con el de producción. Con un solo comando, puedes iniciar todos los servicios de tu aplicación en contenedores Docker y comenzar a desarrollar sin preocuparte por las diferencias de configuración entre entornos.

Por lo tanto, Docker Compose es una herramienta poderosa para definir, gestionar y desplegar aplicaciones multi-contenedor de forma sencilla y consistente. Simplifica la gestión de la infraestructura, facilita la colaboración entre equipos y agiliza el desarrollo de software moderno basado en contenedores.

 

PostgreSQL es un sistema de gestión de bases de datos relacional (RDBMS, por sus siglas en inglés) de código abierto y altamente potente. Es conocido por su robustez, confiabilidad y capacidades avanzadas. Como un RDBMS, PostgreSQL está diseñado para almacenar y administrar datos estructurados de manera eficiente.

Las características clave de PostgreSQL incluyen:

  • Multiplataforma: Funciona en una amplia gama de sistemas operativos, incluyendo Linux, Windows, macOS y otras plataformas.
  • Extensible: Ofrece soporte para extensiones y permite la creación de funciones personalizadas, tipos de datos y lenguajes de programación.
  • SQL Avanzado: Implementa un amplio conjunto de características de SQL, incluyendo soporte para procedimientos almacenados, funciones definidas por el usuario y desencadenadores.
  • Escalabilidad: Puede gestionar grandes volúmenes de datos y escalar para satisfacer las demandas de aplicaciones en crecimiento.
  • Seguridad: Ofrece una variedad de herramientas de seguridad, incluyendo autenticación, roles de usuario, control de acceso y encriptación.
PgAdmin es una herramienta de administración y desarrollo para PostgreSQL. Proporciona una interfaz gráfica para interactuar con bases de datos PostgreSQL y permite realizar tareas como:
  • Administrar Bases de Datos: Crear, eliminar y modificar bases de datos y sus objetos (tablas, vistas, índices, etc.).
  • Consultas SQL: Ejecutar consultas SQL y ver los resultados de forma gráfica o en forma de tabla.
  • Gestión de Usuarios y Permisos: Administrar usuarios, roles y privilegios para el acceso a la base de datos.
  • Monitoreo y Optimización: Supervisar el rendimiento de la base de datos, realizar análisis y optimizar consultas para mejorar la eficiencia.
PostgreSQL es el sistema de gestión de bases de datos robusto y confiable, mientras que PgAdmin es una interfaz gráfica que facilita la administración y el desarrollo de bases de datos PostgreSQL. Juntos, ofrecen una potente solución para gestionar eficazmente grandes conjuntos de datos y aplicaciones empresariales.


Ahora, hablemos sobre PostgreSQL y PgAdmin en Docker:

PostgreSQL en Docker: Es posible ejecutar una instancia de PostgreSQL dentro de un contenedor Docker. Esto permite aislar la base de datos y sus dependencias, incluyendo la configuración y el almacenamiento, en un entorno controlado y portátil.

PgAdmin en Docker: De manera similar, se puede ejecutar PgAdmin dentro de un contenedor Docker. Esto ofrece una interfaz gráfica de administración para PostgreSQL, permitiendo gestionar bases de datos de forma eficiente y desde cualquier lugar donde se ejecute Docker.

Docker proporciona la capacidad de crear, ejecutar y administrar contenedores que encapsulan aplicaciones y servicios, incluyendo la ejecución de instancias de PostgreSQL y PgAdmin en entornos controlados y portátiles. Esta metodología ofrece flexibilidad y eficiencia en el desarrollo y despliegue de aplicaciones, incluyendo la gestión de bases de datos.

REPOSITORIO GITHUB - POSTGRESQL







Comentarios

Entradas populares