En este tutorial aprenderas a usar PostgreSQL desde un contenedor de Docker. Aprenderas a instalarlo, ejectuar los comandos básicos de configuracion y tambien como interactuar con nuestro contenedor desde otras aplicaciones como Cliente SQL o código.
Requerimientos
Para este tutorial es necesario tener los siguientes Requerimientos:
- Tener Docker Instalado y conocer sus bases
- Conocimientos básicos de la consola
- Conocimientos Básicos de PostgreSQL
Recursos
Antes de empeza es muy bueno tener cerca la documentación:
- Docker Hub: https://hub.docker.com/_/postgres
- Github README: https://github.com/docker-library/docs/blob/master/postgres/README.md
Instalacion del Contenedor de PostgreSQL
Lo primero es descargar el contenedore:
docker pull postgres
Una vez descargado podemos crear una instanacia con:
docker run postgres
sin embargo esta nos solicita colocar una contraseña inicial de configuracion:
docker run -e POSTGRES_PASSWORD=password postgres
Este comando creara una instancia. Pero como esta ejecutandose en una consola necesitaremos abrir otra consola o terminal para interactuar con el contenedor.
docker exec -it <container_name> bash
Una vez dentro del contenedor, puedes ejecutar:
psql -U postgres --password
En nuestro caso la contraseña es
password
Y podemos ejecutar las consultas tipicas como:
CREATE DATABASE test;
SELECT 1 + 1 AS result;
Para salir del contenedor podemos presionar Ctrl + D dos veces (una para cerrar psql y otra para salir del contenedor).
Colocar un nombre al contenedor
Ahora es comun colocarle un nombre a nuestro contenedor para eso podemos usar el parametro name.
Primero eliminemos el contenedor y luego ejecutemoslo otra vez.
docker ps -a
docker rm <container_name>
y creemoslo otra vez:
docker run --name myposgres -e POSTGRES_PASSWORD=password postgres
Luego para conectarnos podemos ejecutar:
docker exec -it mypostgres bash
Ejecutar en Detach Mode
Variables de entorno
- POSTGRES_PASSWORD. esta es la unica Variable requerida
- POSTGRES_USER. esta creara un usuario nuevo. se usa conjuntamente con la Variable POSTGRES_PASSWORD
docker run --name myposgres -e POSTGRES POSTGRES_PASSWORD=password postgres
EL siguiente comando es uno de los que más uso cuando desarrollo con postgres
docker run --name some-postgres -e POSTGRES_USER=fazt -e POSTGRES_PASSWORD=mysecretpassword -d postgres
psql -U fazt --password
POSTGRES_DB
docker run --name some-postgres -e POSTGRES_USER=fazt -e POSTGRES_PASSWORD=mysecretpassword -e POSTGRES_DB=mydb postgres
psql -U fazt --db mydb
multiples lineas:
Tambien es posible escribir el comando en multiples lineas:
docker run -d \
--name some-postgres \
-e POSTGRES_PASSWORD=password \
-p 5432:5432 \
postgres
Acceder al contenedor desde Fuera
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres
Este es el comando que más uso, el cual permite crear un usuario con contraseña, exponer postgresql en el puerto 5432, y usarlo en modo Detach para que se ejecute en segundo plano:
docker run --name some-postgres -e POSTGRES_USER=fazt -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d postgres
A partir de aqui puedes acceder al conteneder utilizando Clientes SQL como DBeaver
CREANDO CON UNA BASE DE DATOS
Tambien es posible usar la Variable de entorno POSTGRES_DB para poder crear una base de datos cuando iniciamos el contenedor.
docker run --name some-postgres -e POSTGRES_USER=fazt -e POSTGRES_PASSWORD=mysecretpassword -e POSTGRES_DB=tasksdb -p 5432:5432 -d postgres
para poder conectarnos desde psql, usaremos el comando:
psql -U fazt tasksdb
Comandos Básicos
docker stop <id>
docker rm <id>
Volumes
docker run --name some-postgres -v /my/own/datadir:/var/lib/postgresql/data -e POSTGRES_PASSWORD=mysecretpassword -d postgres:tag
Y si necesito la interfaz pgadmin, este es el comando que uso con docker-compose: