Docker PostgreSQL
How to run PostgreSQL in Docker.
Docker PostgreSQL
# Run PostgreSQL
docker run -d \
--name postgres-db \
-e POSTGRES_DB=myapp \
-e POSTGRES_USER=user \
-e POSTGRES_PASSWORD=password \
-v postgres-data:/var/lib/postgresql/data \
-p 5432:5432 \
postgres:15
docker-compose.yml
version: '3.8'
services:
database:
image: postgres:15
environment:
POSTGRES_DB: myapp
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- postgres-data:/var/lib/postgresql/data
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
ports:
- "5432:5432"
networks:
- app-net
api:
build: .
environment:
DB_HOST: database
DB_PORT: 5432
DB_NAME: myapp
DB_USER: user
DB_PASSWORD: password
networks:
- app-net
networks:
app-net:
volumes:
postgres-data:
Use Case: PostgreSQL Application
# Run PostgreSQL
docker run -d \
--name myapp-db \
-e POSTGRES_DB=myapp \
-e POSTGRES_USER=admin \
-e POSTGRES_PASSWORD=secret \
-v postgres-data:/var/lib/postgresql/data \
-p 5432:5432 \
postgres:15
# Connect to PostgreSQL
docker exec -it myapp-db psql -U admin -d myapp
Everyday Use Case
Case: A developer needs a PostgreSQL database.
# Run PostgreSQL
docker run -d --name postgres -e POSTGRES_PASSWORD=secret -p 5432:5432 postgres:15
# Connect
psql -h 127.0.0.1 -U postgres
# Back up
docker exec postgres pg_dump -U postgres myapp > backup.sql
Best Practices
- Use a named volume: For persistent data
- Environment variables: For configuration
- Health check: To make sure PostgreSQL is ready
- Back up regularly: For data safety
Conclusion
PostgreSQL in Docker is easy to set up. Use a named volume for persistent data and environment variables for configuration.