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 postgresConfiguració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-alpineUsando 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 -vComandos ú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 mydatabaseImportante: 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.