Cómo desplegar un contenedor e imagen Docker con el motor de base de datos PostgreSQL, con persistencia (los datos quedarán almacenados) y con acceso externo (se podrá acceder a la base de datos desde equipos externos al anfitrión Docker. Desplegaremos también pgAdmin para administración web del servidor PostgreSQL.

Requisitos para desplegar contenedor Docker con PostgreSQL

Necesitaremos disponer de un equipo con Docker Desktop, bien en Windows:

O bien en Linux:

Desplegar contenedor con PostgreSQL y pgAdmin

Crearemos una carpeta y, dentro de ella, crearemos un fichero llamado compose.yml, con el siguiente contenido:

Para desplegar los contenedores, en la misma carpeta donde tengamos el fichero compose.yml, ejecutaremos el comando:

Tras el despliegue, podremos comprobar que se han iniciado las imágenes con el comando:

Acceso a pgAdmin vía web, creación de tabla para probar persistencia

En el fichero compose.yml anterior hemos desplegado dos imágenes, una con el motor de base de datos PostgreSQL y la otra con el gestor web pgAdmin. Para acceder a pgAdmin, desde cuaquier equipo de la red, introduciremos en la URL del navegador la IP del equipo anfitrión con Docker Desktop y el puerto que hemos indicado en el fichero compose.yml, en este caso con el puerto 8081:

http://192.168.1.10:8081

En nuestro caso el equipo anfitrión tiene la IP 192.168.1.10. Si tenemos un cortafuegos activado en el equipo, tendremos que abrir el puerto correspondiente.

Introduciremos el usuario y la contraseña establecidas en el fichero compose.yml, en las líneas:

Crearemos un acceso al servidor PostgreSQL, pulsando con el botón derecho del ratón sobre «Servers» y eligiendo «Register» – «Servidor…»:

En la pestaña «General», introduciremos un nombre para la conexión, por ejemplo «srvpostgre»:

En la pestaña «Conexión» introduciremos los siguientes datos (especificados en el fichero compose.yml):

  • Nombre/Dirección de servidor: en nuestro caso «bdpostgre».
  • Puerto: en nuestro caso 5432.
  • Base de datos de mantenimiento: la de defecto «postgres».
  • Nombre de usuario: en nuestro caso «bdproyectoa».
  • Contraseña: la contraseña indicada en el fichero compose.yml.
  • ¿Salvar contraseña?: si no queremos que nos pida la contraseña cada vez que nos conectemos, activaremos esta opción.

Conectaremos con el servidor PostgreSQL del contenedor Docker y ya podremos realizar cualquier operación. Por ejemplo, vamos a crear una tabla llamada «facturas» para probar la persistencia de datos. Para ello, desplegaremos «srvpostgre» – «Bases de Datos» – «bdproyectoa» – «Esquemas» – «public». Pulsaremos con el botón derecho del ratón sobre «Tablas» y elegiremos «Crear» – «Tabla…»:

La llamaremos «facturas»:

Le añadiremos los campos:

  • numero: de tipo «serial».
  • codigo_cliente: de tipo «integer».
  • importe: de tipo «money».
  • fecha: de tipo «date».

La sentencia SQL para crear la tabla en PostgreSQL sería:

Una vez creada la tabla «facturas», le insertaremos varios registros para probar la persistencia. Podemos hacerlo ejecutando el SQL:

O bien desde la propia consola web de pgAdmin:

Si detenemos Docker Desktop o bien si reiniciamos el equipo anfitrión con Docker Desktop, comprobaremos que los contenedores se inician automáticamente y los datos siguen existiendo:

Podemos hacer un select sobre la tabla «facturas»: