Логи и деплой поправил

This commit is contained in:
2025-11-25 10:54:12 +03:00
parent e24cf8a105
commit 68486d2283
6 changed files with 36 additions and 1673 deletions

View File

@@ -1,6 +1,5 @@
DEBUG=False DEBUG=False
ENVIRONMENT=production ENVIRONMENT=production
DJANGO_ENVIRONMENT=production
DJANGO_SETTINGS_MODULE=dbapp.settings.production DJANGO_SETTINGS_MODULE=dbapp.settings.production
SECRET_KEY=django-insecure-dev-key-only-for-production SECRET_KEY=django-insecure-dev-key-only-for-production

View File

@@ -4,18 +4,12 @@ Celery configuration for dbapp project.
import os import os
from celery import Celery from celery import Celery
# Use the environment variable to determine the settings module
os.environ.setdefault('DJANGO_SETTINGS_MODULE', os.getenv('DJANGO_SETTINGS_MODULE', 'dbapp.settings.development')) os.environ.setdefault('DJANGO_SETTINGS_MODULE', os.getenv('DJANGO_SETTINGS_MODULE', 'dbapp.settings.development'))
app = Celery('dbapp') app = Celery('dbapp')
# Using a string here means the worker doesn't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
# should have a `CELERY_` prefix.
app.config_from_object('django.conf:settings', namespace='CELERY') app.config_from_object('django.conf:settings', namespace='CELERY')
# Load task modules from all registered Django apps.
app.autodiscover_tasks() app.autodiscover_tasks()

View File

@@ -57,7 +57,7 @@ TEMPLATES = [
"DIRS": [ "DIRS": [
BASE_DIR / "templates", BASE_DIR / "templates",
], ],
"APP_DIRS": False, # Must be False when using custom loaders "APP_DIRS": False,
"OPTIONS": { "OPTIONS": {
"context_processors": [ "context_processors": [
"django.template.context_processors.debug", "django.template.context_processors.debug",
@@ -88,6 +88,13 @@ STATICFILES_STORAGE = "django.contrib.staticfiles.storage.ManifestStaticFilesSto
# ============================================================================ # ============================================================================
# LOGGING CONFIGURATION # LOGGING CONFIGURATION
# ============================================================================ # ============================================================================
LOGS_DIR = BASE_DIR.parent / "logs"
LOGS_DIR.mkdir(parents=True, exist_ok=True)
# ============================================================================
# CELERY LOGGING CONFIGURATION
# ============================================================================
CELERY_WORKER_HIJACK_ROOT_LOGGER = False
LOGGING = { LOGGING = {
"version": 1, "version": 1,
@@ -116,7 +123,13 @@ LOGGING = {
"file": { "file": {
"level": "ERROR", "level": "ERROR",
"class": "logging.FileHandler", "class": "logging.FileHandler",
"filename": BASE_DIR.parent / "logs" / "django_errors.log", "filename": LOGS_DIR / "django_errors.log",
"formatter": "verbose",
},
"celery_file": {
"level": "INFO",
"class": "logging.FileHandler",
"filename": LOGS_DIR / "celery.log",
"formatter": "verbose", "formatter": "verbose",
}, },
"mail_admins": { "mail_admins": {
@@ -137,5 +150,15 @@ LOGGING = {
"level": "ERROR", "level": "ERROR",
"propagate": False, "propagate": False,
}, },
"celery": {
"handlers": ["console", "celery_file"],
"level": "INFO",
"propagate": False,
},
"celery.task": {
"handlers": ["console", "celery_file"],
"level": "INFO",
"propagate": False,
},
}, },
} }

View File

@@ -6,7 +6,13 @@ ENVIRONMENT=${ENVIRONMENT:-production}
echo "Starting in $ENVIRONMENT mode..." echo "Starting in $ENVIRONMENT mode..."
# Ждем PostgreSQL if [ -d "logs" ]; then
echo "Directory logs already exists."
else
echo "Creating logs directory..."
mkdir -p logs
fi
echo "Waiting for PostgreSQL..." echo "Waiting for PostgreSQL..."
until PGPASSWORD=$DB_PASSWORD psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" -c '\q' 2>/dev/null; do until PGPASSWORD=$DB_PASSWORD psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" -c '\q' 2>/dev/null; do
echo "PostgreSQL is unavailable - sleeping" echo "PostgreSQL is unavailable - sleeping"
@@ -14,17 +20,14 @@ until PGPASSWORD=$DB_PASSWORD psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" -c
done done
echo "PostgreSQL started" echo "PostgreSQL started"
# Выполняем миграции
echo "Running migrations..." echo "Running migrations..."
uv run python manage.py migrate --noinput uv run python manage.py migrate --noinput
# Собираем статику (только для production)
if [ "$ENVIRONMENT" = "production" ]; then if [ "$ENVIRONMENT" = "production" ]; then
echo "Collecting static files..." echo "Collecting static files..."
uv run python manage.py collectstatic --noinput uv run python manage.py collectstatic --noinput
fi fi
# Запускаем сервер в зависимости от окружения
if [ "$ENVIRONMENT" = "development" ]; then if [ "$ENVIRONMENT" = "development" ]; then
echo "Starting Django development server..." echo "Starting Django development server..."
exec uv run python manage.py runserver 0.0.0.0:8000 exec uv run python manage.py runserver 0.0.0.0:8000

File diff suppressed because it is too large Load Diff

View File

@@ -9,6 +9,7 @@ services:
- db - db
volumes: volumes:
- static_volume:/app/staticfiles - static_volume:/app/staticfiles
- ./logs:/app/logs
expose: expose:
- 8000 - 8000
@@ -18,12 +19,14 @@ services:
dockerfile: Dockerfile dockerfile: Dockerfile
env_file: env_file:
- .env.prod - .env.prod
entrypoint: [] #entrypoint: []
command: ["uv", "run", "celery", "-A", "dbapp", "worker", "--loglevel=INFO"] command: ["uv", "run", "celery", "-A", "dbapp", "worker", "--loglevel=INFO"]
depends_on: depends_on:
- db - db
- redis - redis
- web - web
volumes:
- ./logs:/app/logs
redis: redis:
image: redis:7-alpine image: redis:7-alpine
@@ -53,7 +56,6 @@ services:
volumes: volumes:
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro
- static_volume:/usr/share/nginx/html/static - static_volume:/usr/share/nginx/html/static
# если у тебя медиа — можно замонтировать том media
volumes: volumes:
pgdata: pgdata: