Este tutorial lo guiará a través de cómo ejecutar PostgreSQL con almacenamiento persistente dentro de un contenedor Docker y conectarse a él.
Docker se ha convertido en un estándar en la industria de TI para empaquetar, implementar y ejecutar aplicaciones distribuidas con facilidad. Los contenedores Docker le permiten ejecutar rápidamente nuevas aplicaciones sin saturar su sistema con dependencias.
Puede usar Docker para ejecutar una base de datos PostgreSQL en un contenedor como servidor remoto. Los contenedores Docker se basan en estándares abiertos, lo que permite que los contenedores se ejecuten en las principales distribuciones de Linux, macOS y Microsoft Windows.
Ejecutar PostgreSQL en Docker
Haremos aquí para descargar la imagen de PostgreSQL, verificar que la imagen esté lista, ejecutar la imagen con parámetros específicos y finalmente conectarnos a la instancia de PostgreSQL en ejecución.
1. Obtener una imagen Docker del servidor PostgreSQL
Primero, necesitamos obtener una imagen oficial de PostgreSQL existente de Docker Hub. Las imágenes están disponibles para las versiones 9, 10, 11, 12 y 13 de PostgreSQL. Cambie el latest
etiquete a la versión requerida si necesita una versión específica.
Ahora saquemos la imagen:
sudo docker pull postgres:latest
El uso del comando anterior extraerá la última versión disponible de PostgreSQL del repositorio de Docker Hub.
2. Ejecute un contenedor desde la imagen Docker del servidor PostgreSQL
Antes de implementar, deberá configurar un volumen de Docker o un montaje de enlace para mantener su base de datos. De lo contrario, sus datos se perderán cuando se reinicie el contenedor. El montaje debe realizarse en /var/lib/postgresql/data
directorio dentro del contenedor.
Crearemos un volumen acoplable para esta guía y lo adjuntaremos a su contenedor de PostgreSQL.
El siguiente comando creará el volumen en su máquina local, que podrá conectar con el contenedor de PostgreSQL más adelante:
sudo docker volume create postgres-volume
Ahora que tiene una imagen de PostgreSQL en su máquina y un volumen para conservar los datos, puede implementar un contenedor con:
sudo docker run -d --name=postgres13 -p 5432:5432 -v postgres-volume:/var/lib/postgresql/data -e POSTGRES_PASSWORD=[your_password] postgres
El comando docker run creará una base de datos PostgreSQL en ejecución dentro de un contenedor Docker.
Analicemos esta sintaxis. Primero, esto es lo que significa cada parámetro en ese comando:
-d
ejecutará este contenedor en un modo separado para ejecutarlo en segundo plano.--name
asigna el nombrepostgres13
a su instancia de contenedor.-p
vinculará el puerto del contenedor PostgreSQL 5432 al mismo puerto en su máquina host. Podrá conectarse alocalhost:5432
usando clientes PostgreSQL (psql
) ejecutándose en su host.-v
opción vincular esa carpeta de datos dentro del volumen del contenedor (/var/lib/postgresql
) al volumen Docker local (postgres-volume
) que creó en el paso anterior.-e
establece una variable de entorno. En este caso, la contraseña raíz de PostgreSQL.postgres
es el nombre de la imagen que usamos para crear el contenedor.
Puede verificar si el contenedor se está ejecutando enumerando los contenedores en ejecución:
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6cb3293fe725 postgres "docker-entrypoint.s…" 19 minutes ago Up 19 minutes 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgres13
¡Felicidades! Su nueva instancia de PostgreSQL ahora se está ejecutando en Docker.
Además, puede verificar el archivo de registro del contenedor de PostgreSQL en ejecución con el siguiente comando:
sudo docker logs postgres13
3. Conéctese al servidor PostgreSQL
Puede obtener un shell interactivo de PostgreSQL adjuntándolo al contenedor y ejecutando psql
dominio. Esto proporciona la interfaz de línea de comandos completa de PostgreSQL para usar todos los comandos y banderas familiares.
sudo docker exec -it postgres13 psql -U postgres
También puede conectarse con la instancia Docker de PostgreSQL usando psql
Cliente PostgreSQL si lo tiene preinstalado en su host.
psql -h localhost -U postgres
Conclusión
Uno de los casos de uso más importantes del uso de Docker es la facilidad de crear y acceder a aplicaciones integradas en contenedores sin preocuparse por las dependencias y las instalaciones.
En este tutorial, aprendimos a configurar un servidor PostgreSQL usando Docker en lugar de la máquina host real.
Con una arquitectura de microservicios en la que diferentes microservicios dependen de sus bases de datos, la implementación de servidores PostgreSQL como contenedores Docker se ha vuelto común.
También se usa ampliamente para la ejecución local o pruebas de integración de extremo a extremo en un entorno aislado.
Hágame saber si tiene alguna pregunta o sugerencia, y estaré encantado de hacer un seguimiento con usted.