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 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.

Requisitos:

Para seguir este artículo, debe tener instalado Docker en su computadora. Linuxhint tiene muchos artículos que puede seguir para instalar Docker en su distribución de Linux deseada si aún no lo tiene instalado. Entonces, 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 Docker Compose muy fácilmente con el siguiente comando:

$ sudo curl -l "https: // github.com/docker/compose/comunes/descargar/1.24.1/
Docker-Compose-$ (uname -s)-$ (uname -m) "-o/usr/local/bin/docker-composa

NOTA: rizo No se puede instalar en su distribución de Linux. Si ese es el caso, puede instalar Curl con el siguiente comando:

Ubuntu/Debian/Linux Mint:

$ sudo apt instalación curl -y

Centos/Rhel/Fedora:

$ sudo dnf instalación curl -y

Una vez compuesto de acopolador El archivo binario se descarga, ejecute el siguiente comando:

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

Ahora, verifique si compuesto de acopolador El comando está funcionando de la siguiente manera:

$ Docker-Compose Version

Debe 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, navegue al directorio del proyecto ~/docker/pgdev como sigue:

$ CD ~/Docker/PGDEV

Ahora, crea un compuesto de acopolador.yaml Archivo en el directorio del proyecto ~/Docker/PGDEV y escriba las siguientes líneas en el compuesto de acopolador.yaml archivo.

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: [email protected]
Pgadmin_default_password: secreto
Pgadmin_listen_port: 80
Puertos:
- "8080: 80"
Volúmenes:
- pgadmin-data:/var/lib/pgadmin
Enlaces:
- "DB: PGSQL-Server"
Volúmenes:
DB-Data:
Pgadmin-Data:

El compuesto de acopolador.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 Docker.

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

En db servicio, el Postgres_DB, Postgres_user, Postgres_password Las variables de entorno se utilizan para establecer el nombre de la base de datos predeterminados, el nombre de usuario del administrador y la contraseña de usuario de administrador para el servidor PostgreSQL respectivamente. El 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 establecer el correo electrónico de inicio de sesión y la contraseña de la interfaz web de PGADmin respectivamente. El Pgadmin_listen_port se usa para establecer el puerto pgadmin 80 en el contenedor.

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

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

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

En el pgadmin servicio, el puerto de contenedor 80 (a la 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 un contenedor. Por lo tanto, puede acceder al servidor PostgreSQL usando servidor PGSQL Como el nombre de host (no se requiere la dirección IP).

Iniciar servidor PostgreSQL y PGADmin:

Ahora, para comenzar el db y pgadmin Servicios, 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 Docker-proxy 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 anfitrión Docker 5432 se asigna al puerto TCP del contenedor 5432.

Para el pgadmin Servicio, el puerto de anfitrión Docker 8080 se asigna al puerto TCP del contenedor 80.

Acceder 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, debe conocer la dirección IP de su host de Docker.

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

$ IP

En mi caso, la dirección IP de mi host de Docker 192.168.20.160. Será diferente para ti. Entonces, asegúrese de reemplazarlo con el tuyo de ahora en adelante.

Acceso 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 de Docker o http: // 192.168.20.160: 8080 de 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 tablero de Pgadmin.

Ahora, para agregar el servidor PostgreSQL que se ejecuta como contenedor Docker, haga clic derecho en Servidor, Y luego ve a Crear > Servidor…

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

Ahora, ve al Conexión pestaña y escriba servidor PGSQL como Nombre de host/dirección, 5432 como Puerto, post -put como Base de datos de mantenimiento, administración como Nombre de usuario, secreto como Contraseña y verificar Guardar contraseña? caja. Entonces, 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.

Acceder a PostgreSQL desde DataGrip:

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

En caso de data de referencia, haga clic en + desde el Bases de datos sección y ir a Fuente de datos > Postgresql.

El controlador PostgreSQL no se puede instalar. En ese caso, haga clic en Descargar.

El controlador debe instalarse. Ahora, escriba la dirección IP del host 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, post -put como el Base de datos y haga clic en Conexión de prueba.

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

Ahora, haga clic en DE ACUERDO.

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

Detener postgresql y pgadmin:

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

$ Docker-Compose Down

El db y pgadmin Los servicios deben detenerse.

Limpieza de datos PostgreSQL y Pgadmin:

Si desea eliminar todos los datos y configuraciones de la base de datos PostgreSQL, y todas las configuraciones de PGADmin, debe eliminar el datos de DB y pgadmin-data volúmenes.

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

$ Docker Volumen LS

Como puede ver, hay 2 volúmenes para el PGDEV proyecto, data PGDEV_DB 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: // cubo.estibador.com/_/Postgres?Tab = Descripción
[2] https: // hub.estibador.com/r/dpage/pgadmin4/
[3] https: // www.pgadmin.org/docs/pgadmin4/último/contenedor_deployment.html