Browse Source

feat: add PostgreSQL service to docker-compose and configure Django settings to use PostgreSQL from .env

master
PouyaKhajavi 1 day ago
parent
commit
e5cd881f3c
  1. 24
      backend/config/settings.py
  2. 29
      docker-compose.yml

24
backend/config/settings.py

@ -86,12 +86,26 @@ WSGI_APPLICATION = 'config.wsgi.application'
# Database # Database
# https://docs.djangoproject.com/en/6.0/ref/settings/#databases # https://docs.djangoproject.com/en/6.0/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
POSTGRES_DB = os.getenv('POSTGRES_DB')
if POSTGRES_DB:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': POSTGRES_DB,
'USER': os.getenv('POSTGRES_USER', 'postgres'),
'PASSWORD': os.getenv('POSTGRES_PASSWORD', 'postgres'),
'HOST': os.getenv('POSTGRES_HOST', 'localhost'),
'PORT': os.getenv('POSTGRES_PORT', '5432'),
}
} }
}
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
# Password validation # Password validation

29
docker-compose.yml

@ -1,4 +1,22 @@
services: services:
db:
image: postgres:16-alpine
container_name: divar_postgres
restart: always
environment:
POSTGRES_DB: ${POSTGRES_DB:-divar_crawler}
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-divar_crawler}"]
interval: 5s
timeout: 5s
retries: 5
redis: redis:
image: redis:7-alpine image: redis:7-alpine
container_name: divar_redis container_name: divar_redis
@ -20,11 +38,14 @@ services:
- "8000:8000" - "8000:8000"
environment: environment:
- REDIS_URL=redis://redis:6379/0 - REDIS_URL=redis://redis:6379/0
- POSTGRES_HOST=db
env_file: env_file:
- .env - .env
volumes: volumes:
- ./backend:/app/backend - ./backend:/app/backend
depends_on: depends_on:
db:
condition: service_healthy
redis: redis:
condition: service_healthy condition: service_healthy
@ -36,15 +57,16 @@ services:
command: sh -c "celery -A config worker --loglevel=info -P gevent -c 20" command: sh -c "celery -A config worker --loglevel=info -P gevent -c 20"
environment: environment:
- REDIS_URL=redis://redis:6379/0 - REDIS_URL=redis://redis:6379/0
- POSTGRES_HOST=db
env_file: env_file:
- .env - .env
volumes: volumes:
- ./backend:/app/backend - ./backend:/app/backend
depends_on: depends_on:
db:
condition: service_healthy
redis: redis:
condition: service_healthy condition: service_healthy
backend:
condition: service_started
frontend: frontend:
build: build:
@ -60,3 +82,6 @@ services:
- /app/frontend/node_modules - /app/frontend/node_modules
depends_on: depends_on:
- backend - backend
volumes:
postgres_data:
Loading…
Cancel
Save