Uruchamiamy PostgreSQL na Dockerze

Uruchomiliśmy juz projekt oparty na Django za pomocą Dockera, teraz przyszedł czas na podpięcie bazy PostgreSQL.

Konfigurujemy Dockera

Modyfikujemy nasz plik docker-compose.yml

version: '3.7'
services:
  web:
    build: .
    command: sh -c "python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
    volumes:
      - .:/code/
    ports:
      - "8000:8000"
    env_file:
      - ./env
    depends_on:
      - db
  db:
    image: postgres:12.0-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=testdocker
      - POSTGRES_PASSWORD=testdocker
      - POSTGRES_DB=testdocker
volumes:
  postgres_data:
Dodajemy do projektu plik env

SQL_ENGINE=django.db.backends.postgresql
SQL_DATABASE=testdocker
SQL_USER=testdocker
SQL_PASSWORD=testdocker
SQL_HOST=db
SQL_PORT=5432
Musimy teraz zmodyfikować nasze settingsy, tak aby korzystały z bazy PostgreSQL a nie domyślnej Sqlite.

DATABASES = {
    "default": {
        "ENGINE": os.environ.get("SQL_ENGINE", "django.db.backends.sqlite3"),
        "NAME": os.environ.get("SQL_DATABASE", os.path.join(BASE_DIR, "db.sqlite3")),
        "USER": os.environ.get("SQL_USER"),
        "PASSWORD": os.environ.get("SQL_PASSWORD"),
        "HOST": os.environ.get("SQL_HOST", "localhost"),
        "PORT": os.environ.get("SQL_PORT", "5432"),
        "TEST": {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': 'test-db.sqlite3',
        },
    },
}

Do pliku requirements.txt dodajemy psycopg2-binary==2.8.4

# Budujemy nowe kontenery
docker-compose build
docker-compose up -d

Sprawdzamy czy zostały dodane tabelki do bazy

Komentarze