Estibador

Configurar un servidor PostgreSQL y pgAdmin con Docker

Configurar un servidor PostgreSQL y pgAdmin con Docker
En este artículo, le mostraré cómo usar Docker Compose para crear un contenedor PostgreSQL y acceder a él usando pgAdmin 4, la interfaz de administración de PostgreSQL basada en la web. También le mostraré cómo acceder al servidor de base de datos PostgreSQL que se ejecuta en un contenedor Docker desde DataGrip IDE. Entonces empecemos.

Requerimientos:

Para seguir este artículo, debe tener Docker instalado en su computadora. LinuxHint tiene muchos artículos que puede seguir para instalar Docker en la distribución de Linux que desee si aún no lo tiene instalado. Por lo tanto, asegúrese de verificar LinuxHint.com en caso de que tenga problemas para instalar Docker.

Instalación de Docker Compose:

Puede descargar el archivo binario de Docker Compose muy fácilmente con el siguiente comando:

$ sudo curl -L "https: // github.com / docker / compose / releases / download / 1.24.1 /
docker-compose - $ (uname -s) - $ (uname -m) "-o / usr / local / bin / docker-compose

NOTA: rizo puede que no esté instalado en su distribución de Linux. Si ese es el caso, puede instalar curl con el siguiente comando:

Ubuntu / Debian / Linux Mint:

$ sudo apt install curl -y

CentOS / RHEL / Fedora:

$ sudo dnf install curl -y

Una vez docker-compose descargado el archivo binario, ejecute el siguiente comando:

$ sudo chmod + x / usr / local / bin / docker-compose

Ahora, compruebe si docker-compose El comando funciona de la siguiente manera:

$ docker-compose versión

Debería imprimir la información de la versión como se muestra en la captura de pantalla a continuación.

Configuración de Docker Compose para el proyecto:

Ahora, cree un directorio de proyecto (digamos ~ / docker / pgdev) como sigue:

$ mkdir -p ~ / docker / pgdev

Ahora, navega hasta el directorio del proyecto ~ / docker / pgdev como sigue:

$ cd ~ / docker / pgdev

Ahora, crea un docker-compose.yaml en el directorio del proyecto ~ / docker / pgdev y escriba las siguientes líneas en el docker-compose.yaml expediente.

versión: "3.7 "
servicios:
db:
imagen: postgres: 12.2
reiniciar: siempre
ambiente:
POSTGRES_DB: postgres
POSTGRES_USER: admin
POSTGRES_PASSWORD: secreto
PGDATA: / var / lib / postgresql / data
volúmenes:
- db-data: / var / lib / postgresql / data
puertos:
- "5432: 5432"
 
pgadmin:
imagen: dpage / pgadmin4: 4.18
reiniciar: siempre
ambiente:
PGADMIN_DEFAULT_EMAIL: admin @ linuxhint.com
PGADMIN_DEFAULT_PASSWORD: secreto
PGADMIN_LISTEN_PORT: 80
puertos:
- "8080: 80"
volúmenes:
- pgadmin-datos: / var / lib / pgadmin
Enlaces:
- "db: pgsql-server"
volúmenes:
datos-db:
pgadmin-data:

La docker-compose.yaml el archivo debe verse de la siguiente manera.

Aquí, he creado 2 servicios db y pgadmin.

db el servicio ejecutará el postgres: 12.2 imagen (de DockerHub) en un contenedor de Docker.

pgadmin el servicio ejecutará el dpage / pgadmin4: 4.18 imagen (de DockerHub) en otro contenedor de Docker.

En db servicio, el POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD Las variables de entorno se utilizan para establecer el nombre de base de datos predeterminado, el nombre de usuario de administrador y la contraseña de usuario de administrador para el servidor PostgreSQL, respectivamente. La PGDATA La variable de entorno se utiliza para configurar el servidor PostgreSQL para almacenar los datos en / var / lib / postgresql / data directorio del contenedor.

En pgadmin servicio, el PGADMIN_DEFAULT_EMAIL, PGADMIN_DEFAULT_PASSWORD Las variables de entorno se utilizan para configurar el correo electrónico de inicio de sesión y la contraseña de la interfaz web pgAdmin respectivamente. La PGADMIN_LISTEN_PORT se usa para configurar el puerto pgAdmin 80 en el contenedor.

En el servicio db, todo el contenido del / var / lib / postgresql / data El directorio se guardará permanentemente en el datos-db volumen.

En el pgadmin servicio, todos los contenidos del / var / lib / pgadmin El directorio se guardará permanentemente en el pgadmin-data volumen.

En el db servicio, el puerto de contenedores 5432 (derecha) se asigna al puerto de host de Docker 5432 (izquierda).

En el pgadmin servicio, el puerto de contenedores 80 (derecha) se asigna al puerto de host de Docker 8080 (izquierda).

En el pgadmin servicio, un alias de nombre de host servidor pgsql hacia db se crea el contenedor. Entonces, puede acceder al servidor PostgreSQL usando servidor pgsql como nombre de host (no se requiere dirección IP).

Iniciando el servidor PostgreSQL y pgAdmin:

Ahora, para comenzar el db y pgadmin services, ejecute el siguiente comando:

$ docker-compose up -d

Los servicios deben comenzar en segundo plano.

Como puede ver, el puerto 8080 y 5432 son abiertos por el proxy-acoplador Servicio.

$ sudo netstat -tlpn

Para ver cómo se asignan los puertos, ejecute el siguiente comando:

$ docker-compose ps

Como puede ver, para el db servicio, el puerto de host de Docker 5432 se asigna al puerto TCP del contenedor 5432.

Para el pgadmin servicio, el puerto de host de Docker 8080 se asigna al puerto TCP del contenedor 80.

Accediendo al servidor pgAdmin 4 o PostgreSQL desde otras computadoras:

Si desea acceder al servidor de base de datos pgAdmin 4 o PostgreSQL desde otra computadora en su red, entonces debe conocer la dirección IP de su host Docker.

Para encontrar la dirección IP de su host Docker, ejecute el siguiente comando:

$ ip

En mi caso, la dirección IP de mi host Docker 192.168.20.160. Será diferente para ti. Por lo tanto, asegúrese de reemplazarlo por el suyo a partir de ahora.

Accediendo a pgAdmin desde el navegador web:

Ahora, puede acceder fácilmente a pgAdmin 4 desde su navegador web.

Visite http: // localhost: 8080 desde su host Docker o http: // 192.168.20.160: 8080 desde cualquier computadora en su red. Debería ver la página de inicio de sesión de pgAdmin. Inicie sesión con su correo electrónico y contraseña.

Una vez que inicie sesión, debería ver el panel de pgAdmin.

Ahora, para agregar el servidor PostgreSQL que se ejecuta como un contenedor Docker, haga clic derecho en Servidores, y luego ir a Crear > Servidor…

En el General pestaña, escriba su servidor Nombre.

Ahora, ve al Conexión pestaña y escriba servidor pgsql como Nombre / dirección de host, 5432 como Puerto, postgres como Base de datos de mantenimiento, administración como Nombre de usuario, secreto como Contraseña y comprobar Guardar contraseña? caja. Luego, haga clic en Ahorrar.

pgAdmin 4 debe estar conectado a su base de datos PostgreSQL. Ahora, puede trabajar con su base de datos PostgreSQL tanto como desee.

Accediendo a PostgreSQL desde DataGrip:

También puede acceder a su servidor de base de datos PostgreSQL desde DataGrip IDE o cualquier otro IDE de SQL.

En el caso de DataGrip, haga clic en + desde el Bases de datos sección y ve a Fuente de datos > PostgreSQL.

Es posible que el controlador PostgreSQL no esté instalado. En ese caso, haga clic en Descargar.

El controlador debe estar instalado. Ahora, escriba la dirección IP del host de Docker 192.168.20.160 (en mi caso) como el Anfitrión, 5432 como el Puerto, administración como el Usuario, secreto como el Contraseña, postgres como el Base de datos y haga clic en Conexión de prueba.

Debería ver los detalles del servidor de base de datos PostgreSQL si todo funciona.

Ahora, haga clic en OK.

Ahora, puede administrar sus bases de datos PostgreSQL desde DataGrip.

Deteniendo PostgreSQL y pgAdmin:

Ahora, para detener el db y pgadmin services, ejecute el siguiente comando:

$ docker-compose abajo

La db y pgadmin los servicios deben detenerse.

Limpieza de datos de PostgreSQL y pgAdmin:

Si desea eliminar todos los datos y la configuración de la base de datos de PostgreSQL, y todas las configuraciones de pgAdmin, debe eliminar el datos-db y pgadmin-data volúmenes.

Puede encontrar el nombre real de los volúmenes de datos con el siguiente comando:

$ docker volume ls

Como puede ver, hay 2 volúmenes para el pgdev proyecto, pgdev_db-data y pgdev_pgadmin-data.

Puede eliminar estos volúmenes con el siguiente comando:

$ docker volumen rm pgdev_db-data pgdev_pgadmin-data

Referencias:

[1] https: // hub.estibador.com / _ / postgres?tab = descripción
[2] https: // hub.estibador.com / r / dpage / pgadmin4 /
[3] https: // www.pgadmin.org / docs / pgadmin4 / latest / container_deployment.html

Tutorial de OpenTTD
OpenTTD es uno de los juegos de simulación empresarial más populares que existen. En este juego, necesitas crear un maravilloso negocio de transporte....
SuperTuxKart para Linux
SuperTuxKart es un gran título diseñado para ofrecerte la experiencia Mario Kart de forma gratuita en tu sistema Linux. Es bastante desafiante y diver...
Tutorial de Battle for Wesnoth
The Battle for Wesnoth es uno de los juegos de estrategia de código abierto más populares que puedes jugar en este momento. Este juego no solo ha esta...