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

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
ENVIRONMENT=production
DJANGO_ENVIRONMENT=production
DJANGO_SETTINGS_MODULE=dbapp.settings.production
SECRET_KEY=django-insecure-dev-key-only-for-production

View File

@@ -4,18 +4,12 @@ Celery configuration for dbapp project.
import os
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'))
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')
# Load task modules from all registered Django apps.
app.autodiscover_tasks()

View File

@@ -57,7 +57,7 @@ TEMPLATES = [
"DIRS": [
BASE_DIR / "templates",
],
"APP_DIRS": False, # Must be False when using custom loaders
"APP_DIRS": False,
"OPTIONS": {
"context_processors": [
"django.template.context_processors.debug",
@@ -88,6 +88,13 @@ STATICFILES_STORAGE = "django.contrib.staticfiles.storage.ManifestStaticFilesSto
# ============================================================================
# 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 = {
"version": 1,
@@ -116,7 +123,13 @@ LOGGING = {
"file": {
"level": "ERROR",
"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",
},
"mail_admins": {
@@ -137,5 +150,15 @@ LOGGING = {
"level": "ERROR",
"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..."
# Ждем PostgreSQL
if [ -d "logs" ]; then
echo "Directory logs already exists."
else
echo "Creating logs directory..."
mkdir -p logs
fi
echo "Waiting for PostgreSQL..."
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"
@@ -14,17 +20,14 @@ until PGPASSWORD=$DB_PASSWORD psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" -c
done
echo "PostgreSQL started"
# Выполняем миграции
echo "Running migrations..."
uv run python manage.py migrate --noinput
# Собираем статику (только для production)
if [ "$ENVIRONMENT" = "production" ]; then
echo "Collecting static files..."
uv run python manage.py collectstatic --noinput
fi
# Запускаем сервер в зависимости от окружения
if [ "$ENVIRONMENT" = "development" ]; then
echo "Starting Django development server..."
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
volumes:
- static_volume:/app/staticfiles
- ./logs:/app/logs
expose:
- 8000
@@ -18,12 +19,14 @@ services:
dockerfile: Dockerfile
env_file:
- .env.prod
entrypoint: []
#entrypoint: []
command: ["uv", "run", "celery", "-A", "dbapp", "worker", "--loglevel=INFO"]
depends_on:
- db
- redis
- web
volumes:
- ./logs:/app/logs
redis:
image: redis:7-alpine
@@ -53,7 +56,6 @@ services:
volumes:
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro
- static_volume:/usr/share/nginx/html/static
# если у тебя медиа — можно замонтировать том media
volumes:
pgdata: