Skillversitas

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

  1. Use a named volume: For persistent data
  2. Environment variables: For configuration
  3. Health check: To make sure PostgreSQL is ready
  4. 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.