Feature: Docker deployment configuration

- Добавлена поддержка docker-compose для развертывания
- STATIC_ROOT автоматически переключается в prod (/Volume1/DockerAppsData/npm/data/static/)
- Добавлены ALLOWED_HOSTS и CSRF_TRUSTED_ORIGINS из env переменных
- Улучшена обработка .env файла (проверка существования)
- Добавлен gunicorn в requirements.txt
- Добавлены .dockerignore, Dockerfile, docker-compose.yml
- Добавлены example файлы для .env.docker и entrypoint.sh
- Обновлен .gitignore для исключения файлов с секретами

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-08 02:10:59 +03:00
parent 8d50613876
commit 9e1145b9ce
8 changed files with 406 additions and 4 deletions

View File

@@ -21,8 +21,11 @@ env = environ.Env(
SECRET_KEY=(str, 'django-insecure-default-key-change-in-production'),
)
# Read .env file
environ.Env.read_env(BASE_DIR / '.env')
# Read .env file (if exists - for local development)
# In Docker, environment variables are set via docker-compose env_file
env_file = BASE_DIR / '.env'
if env_file.exists():
environ.Env.read_env(env_file)
# Quick-start development settings - unsuitable for production
@@ -34,7 +37,14 @@ SECRET_KEY = env('SECRET_KEY')
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = env('DEBUG')
ALLOWED_HOSTS = ['*'] # Для разработки. В продакшене указать конкретные домены
# Allowed hosts: читаем из переменной окружения или используем wildcard для разработки
ALLOWED_HOSTS = env.list('ALLOWED_HOSTS', default=['*'])
# CSRF trusted origins для работы за nginx proxy
CSRF_TRUSTED_ORIGINS = env.list('CSRF_TRUSTED_ORIGINS', default=[
'https://mix.smaa.by',
'https://*.mix.smaa.by',
])
# ============================================
@@ -212,7 +222,12 @@ USE_TZ = True
STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / 'static']
STATIC_ROOT = BASE_DIR / 'staticfiles'
# В production используем внешнюю директорию для nginx
if not DEBUG:
STATIC_ROOT = '/Volume1/DockerAppsData/npm/data/static/'
else:
STATIC_ROOT = BASE_DIR / 'staticfiles'
# ============================================