Saltar al contenido principal

PostgreSQL con Docker

Usar Docker es la forma más rápida y limpia de tener PostgreSQL funcionando. No contamina tu sistema y es fácil de eliminar cuando no lo necesites.

Requisitos previos

  • Docker instalado en tu sistema
  • Docker Compose (opcional, recomendado)

Inicio rápido

Ejecutar PostgreSQL en Docker
bash
1# Descargar la imagen oficial2docker pull postgres:16-alpine3 4# Ejecutar el contenedor5docker run --name postgres \6    -e POSTGRES_PASSWORD=mysecretpassword \7    -p 5432:5432 \8    -d postgres:16-alpine9 10# Conectarse al contenedor11docker exec -it postgres psql -U postgres

Configuración avanzada

Con volúmenes persistentes
bash
1# Crear directorio para datos persistentes2mkdir -p ~/postgres-data3 4# Ejecutar con volumen persistente5docker run --name postgres \6    -e POSTGRES_USER=myuser \7    -e POSTGRES_PASSWORD=mypassword \8    -e POSTGRES_DB=mydatabase \9    -v ~/postgres-data:/var/lib/postgresql/data \10    -p 5432:5432 \11    -d postgres:16-alpine

Usando Docker Compose

Crea un archivo docker-compose.yml:

docker-compose.yml
yaml
1version: '3.8'2 3services:4  postgres:5    image: postgres:16-alpine6    container_name: postgres7    environment:8      POSTGRES_USER: myuser9      POSTGRES_PASSWORD: mypassword10      POSTGRES_DB: mydatabase11    ports:12      - "5432:5432"13    volumes:14      - postgres_data:/var/lib/postgresql/data15    restart: unless-stopped16 17volumes:18  postgres_data:
Iniciar con Docker Compose
bash
1# Iniciar los servicios2docker compose up -d3 4# Ver logs5docker compose logs -f6 7# Detener servicios8docker compose down9 10# Detener y eliminar volúmenes11docker compose down -v

Comandos útiles de Docker

Gestión del contenedor
bash
1# Listar contenedores activos2docker ps3 4# Ver logs de PostgreSQL5docker logs postgres6 7# Detener el contenedor8docker stop postgres9 10# Iniciar el contenedor11docker start postgres12 13# Eliminar el contenedor14docker rm postgres15 16# Conectarse con psql desde fuera17psql -h localhost -U myuser -d mydatabase
Importante: Por defecto, Docker asigna una IP dinámica al contenedor. Si tienes problemas de conexión, verifica que el puerto 5432 no esté en uso y que el contenedor esté corriendo con docker ps.