feat: Настройка проекта для локальной разработки

- Добавлена конфигурация через poetry (pyproject.toml + poetry.lock)
- Переделана система конфигурации Django с .env переменными
- Добавлен файл .env для локальной разработки (SQLite БД)
- Обновлен settings.py для работы с переменными окружения
- Создана документация по локальной разработке (DEVELOPMENT.md)
- Подготовлена инфраструктура для Docker (Dockerfile, docker-compose.yml)
- Обновлен .gitignore для Python/Django проекта
Проект работает локально с миграциями и админ пользователем (admin/1234).
This commit is contained in:
2026-03-31 00:09:46 +03:00
parent a007337f75
commit d9e8c2d8bd
11 changed files with 1925 additions and 27 deletions

127
docker-compose.prod.yml Normal file
View File

@@ -0,0 +1,127 @@
# docker-compose.prod.yml для production развертывания проекта rosmorport_tsts
# Использование: docker-compose -f docker-compose.prod.yml up -d
version: '3.9'
services:
# Django приложение в production
web:
# Строим образ из Dockerfile в текущей директории
build:
context: .
dockerfile: Dockerfile
# Имя контейнера
container_name: rosmorport_web_prod
# Переменные окружения для production
environment:
- DOCKER_ENV=1
- DEBUG=False
- ALLOWED_HOSTS=localhost,127.0.0.1,0.0.0.0,web,pet-clones.cocorico.ru
- DB_ENGINE=django.db.backends.postgresql
- DB_HOST=db
- DB_PORT=5432
- DB_NAME=${POSTGRES_DB:-rosmorport_db}
- DB_USER=${POSTGRES_USER:-postgres}
- DB_PASSWORD=${POSTGRES_PASSWORD:-postgres}
- PYTHONUNBUFFERED=1
# Тома для статических файлов и медиа
volumes:
- django_staticfiles:/app/public/static
- django_mediafiles:/app/public/media
- ./logs:/app/logs
# Перенаправляем порты
ports:
- "8000:8000"
# Зависимость от базы данных
depends_on:
db:
condition: service_healthy
# Политика перезапуска
restart: unless-stopped
# Ограничения ресурсов
deploy:
resources:
limits:
cpus: '1'
memory: 512M
reservations:
cpus: '0.5'
memory: 256M
# PostgreSQL база данных для production
db:
# Используем официальный образ PostgreSQL
image: postgres:16-alpine
container_name: rosmorport_db_prod
# Переменные окружения
environment:
- POSTGRES_DB=${POSTGRES_DB:-rosmorport_db}
- POSTGRES_USER=${POSTGRES_USER:-postgres}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-postgres}
# Том для хранения данных БД
volumes:
- postgres_data:/var/lib/postgresql/data
# Портов не открываем - доступ только изнутри контейнеров
# ports:
# - "5432:5432"
# Проверка здоровья сервиса
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres}"]
interval: 10s
timeout: 5s
retries: 5
# Политика перезапуска
restart: unless-stopped
# Ограничения ресурсов
deploy:
resources:
limits:
cpus: '1'
memory: 1G
reservations:
cpus: '0.5'
memory: 512M
# Nginx для reverse proxy (опционально)
# nginx:
# image: nginx:alpine
# container_name: rosmorport_nginx
# volumes:
# - ./config/nginx.conf:/etc/nginx/nginx.conf:ro
# - django_staticfiles:/app/static:ro
# - django_mediafiles:/app/media:ro
# ports:
# - "80:80"
# - "443:443"
# depends_on:
# - web
# restart: unless-stopped
# Именованные тома для хранения данных
volumes:
postgres_data:
driver: local
django_staticfiles:
driver: local
django_mediafiles:
driver: local
# Сеть для сервисов
networks:
default:
name: rosmorport_network
driver: bridge