DEV Community

Arpan Bhattacharya
Arpan Bhattacharya

Posted on

PostgreSQL Locally, the Easy Way: Docker Compose!

Tired of database setup headaches during local development? Installing PostgreSQL directly can be a mess of version conflicts and dependency issues. But what if there was a simpler, cleaner solution?

Enter Docker and Docker Compose.

These tools let you run PostgreSQL in an isolated container, making your local setup reproducible, portable, and incredibly easy to manage. No more "it works on my machine" excuses!

Why Docker Compose?

  • Isolation: Your database runs in its own clean container, avoiding conflicts with your system.
  • Reproducibility: A simple configuration file ensures everyone on your team has the exact same database environment.
  • Portability: Move your setup between projects or operating systems with ease.
  • Clean-up: Stop and remove containers without leaving a trace on your system.

Quick Setup: Your docker-compose.yml
Create a file named docker-compose.yml in your project:

services:
  db:
    image: postgres:latest
    restart: always
    container_name: postgres_db
    volumes:
      - ./data/db:/var/lib/postgresql/data
    ports:
      - 5432:5432 # default PostgreSQL port (make sure this port is not in use)

    environment:
      - POSTGRES_USER=your_username
      - POSTGRES_PASSWORD=your_password
      - POSTGRES_DB=your_database_name

  adminer:
    image: adminer:latest
    restart: always
    container_name: adminer
    ports:
      - 8080:8080 # Adminer web interface port
    depends_on:
      - db
Enter fullscreen mode Exit fullscreen mode

What's happening here? We're defining a db service using the postgres image. We set environment variables for your database name, user, and password (please change the password!). The ports line maps port 5432 on your machine to the container. Crucially, the volumes line ensures your data persists even if you restart the container.

Run It!
Navigate to your docker-compose.yml directory in your terminal and run:

docker compose up -d
Enter fullscreen mode Exit fullscreen mode

This command starts your PostgreSQL database in the background.

Connect and Develop
Now you can connect to your local PostgreSQL instance using:

  • Host: localhost
  • Port: 5432
  • Database: your_db_name
  • User: your_username
  • Password: your_password (your chosen password)

To remove containers and networks (but keep your data volume):

docker compose down
Enter fullscreen mode Exit fullscreen mode

Embrace Docker Compose for your local PostgreSQL setup. It's a game-changer for developer sanity and team collaboration! 🌟🌟

Top comments (1)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.