Skip to content

Install PostgreSQL

Debian package manager

sudo apt install postgresql # Currently version 13

PostgreSQL native package

# Create the file repository configuration:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

# Import the repository signing key:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# Update the package lists:
sudo apt update

# Install the latest version of PostgreSQL.
# If you want a specific version, use 'postgresql-12' or similar instead of 'postgresql':
sudo apt -y install postgresql

# Install pgadmin
sudo apt install pgadmin4

# Change user password
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"

Docker

docker container run \
  --name mypostgres \
  -e POSTGRES_USER=myuser \
  -e POSTGRES_PASSWORD=mypass \
  -e POSTGRES_DB=mydb \
  -p 5432:5432 \
  -v my_postgres_data:/var/lib/postgresql \
  -v "$(pwd)/db/init:/docker-entrypoint-initdb.d:ro" \
  --health-cmd "pg_isready -U myuser -d mydb" \
  --health-interval 5s \
  --health-timeout 5s \
  --health-retries 5 \
  "docker.io/postgres:18"

docker container exec -it mypostgres bash

Docker Compose

services:
  db:
    image: docker.io/postgres:18
    environment:
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mypass
      POSTGRES_DB: mydb
    ports:
      - "5432:5432"
    volumes:
      - my_postgres_data:/var/lib/postgresql
      - ./db/init:/docker-entrypoint-initdb.d:ro
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U myuser -d mydb"]
      interval: 5s
      timeout: 5s
      retries: 5
  app:
    build: .
    environment:
      DATABASE_URL: postgresql+psycopg://myuser:mypass@db:5432/mydb
    ports:
      - "8000:8000"
    depends_on:
      db:
        condition: service_healthy
volumes:
  postgres_data:

Restore the DB dvdrental.tar

  • Right click on "PostgreSQL 12" > Create DB
  • Set name "dvdrental" > Create
  • Right click on "dvdrental" > Restore
  • Select dvdrental.tar
  • Restore options select: Pre-date, Data, Post-data
  • Right click on "dvdrental" > Refresh
  • Right click on "dvdrental" > Query tool

DB creation

CREATE DATABASE dvdtest;

Populate DB

  • cd C:\Program Files\PostgreSQL\12\bin
  • pg_restore -U postgres -d dvdtest "C:\dvdrental.tar"