Para tener una instancia de PostgreSQL corriendo en un contenedor simplemente se debe crear un pequeño archivo de configuración que le indique a docker-compose qué debería incluir en dicho contenedor.
**version: "3.3"
#versión de YAML
services:
postgres_db:
#nombre del microservicio
image: postgres:13
environment:
#env variables para postgres
- POSTGRES_DB=your_db_name
- POSTGRES_USER=your_username
- POSTGRES_PASSWORD=your_password
ports:
- 5432:5432
#se vincula el puerto 5432 del host con el puerto 5432 de el contenedor.
volumes:
- ./postgres_data:/var/lib/postgresql/data
#se crea un volumen para que la data de postgres no se pierda al momento de detener el contenedor.**
Y listo! Ya solo queda ejecutar docker-compose up
y el contenedor con la instancia de postgres se ejecutará! Ahora podemos preguntarnos: ¿Y cómo me conecto a esa instancia de postgres?
Muy simple! solo debemos ir a nuestra terminal y ejecutar:
docker-compose exec postgres_db bash
Esto nos abrirá una terminal dentro del contenedor, luego debemos ejecutar
psql -h localhost -d <your_db_name> -U <your_username>
Siendo <your_db_name> el valor de**
POSTGRES_DB
** y <your_username>POSTGRES_USER
(las variables de entorno que añadimos en eldocker-compose.yml
)
Esto si es que eres alguien a quien le gusta trabajar desde la terminal, pero si eres alguien a quien le gusta más utilizar un cliente gráfico como pgadmin, entonces solo debemos añadir un servicio más dentro de nuestro archivo de configuración para docker-compose.
**services:
#config de arriba
pg_admin:
image: dpage/pgadmin4
environment:
- PGADMIN_DEFAULT_EMAIL=any_email
- PGADMIN_DEFAULT_PASSWORD=any_password
#estas credenciales son necesarias para hacer login.
ports:
- 8080:80
#se vincula el puerto 8080 del host con el puerto 80 de el contenedor.**
Luego simplemente levantamos el servicio con docker-compose up
y si vamos a localhost:8080
, encontraremos la interfaz de pgadmin, la cual nos pedirá que hagamos login para continuar.
Las credenciales son las que se declararon dentro de la sección
environment
del servicio.
Listo, ya tenemos pgadmin en un contenedor, ahora solo nos falta conectarnos a la base de datos que esta dentro del otro contenedor. Después de hacer login, en la sección de servers damos click derecho y creamos un nuevo server y en la sección de connection colocamos los siguientes valores:
POSTGRES_USER
que se declaró en la sección environment
del servicio de postgres.POSTGRES_PASSWORD
que se declaró en la sección environment
del servicio de postgres.Y eso es todo! Ya podemos establecer conexiones por terminal o con el cliente gráfico.