feat: оптимизация Docker контейнера для разработки

Обновлен Dockerfile с двухэтапной сборкой, экспортом зависимостей через poetry, сборкой статики и удалением лишних файлов (экономия ~20МБ).
Обновлен docker-compose.yml с привязкой к localhost для безопасности.
Обновлен .dockerignore для исключения ненужных файлов (source maps, RTL CSS, TTF).
Добавлены таймауты SQLite в settings.py.
Минимальные параметры Gunicorn: 1 worker, timeout 30s, max-requests 100.
Тестировано и работает на http://localhost:8040
This commit is contained in:
2026-03-31 18:57:33 +03:00
parent 6e7a4c52e0
commit 792d152be2
4 changed files with 108 additions and 50 deletions

View File

@@ -1,5 +1,7 @@
# docker-compose.yml для локальной разработки проекта rosmorport_tsts
version: '3.9'
# Использование: docker-compose up
# version: '3.9'
services:
# Django приложение
@@ -10,60 +12,27 @@ services:
dockerfile: Dockerfile
# Имя контейнера
container_name: rosmorport_web
container_name: rosmorpor-tst-site--backend
# Переменные окружения для разработки
env_file:
- .env
environment:
- DOCKER_ENV=1
- DJANGO_LOG_LEVEL=DEBUG
- DEBUG=True
- ALLOWED_HOSTS=localhost,127.0.0.1,0.0.0.0,web
- DB_ENGINE=django.db.backends.sqlite3
- DB_NAME=/app/db.sqlite3
- PYTHONUNBUFFERED=1
# Монтируем текущую директорию для разработки
volumes:
- .:/app
- ./public/static:/app/public/static
- ./public/media:/app/public/media
- ./database:/app/database
# Перенаправляем порты
ports:
- "8000:8000"
- "127.0.0.1:8040:8000"
# Команда для запуска в режиме разработки
command: >
sh -c "python rosmorport_tsts/manage.py migrate &&
python rosmorport_tsts/manage.py collectstatic --noinput &&
python rosmorport_tsts/manage.py runserver 0.0.0.0:8000"
# Зависимости (если будут другие сервисы)
# depends_on:
# - db
# Сохраняем контейнер в запущенном состоянии при ошибках
stdin_open: true
tty: true
# Опционально: PostgreSQL база данных для продакшена
# db:
# image: postgres:16-alpine
# container_name: rosmorport_db
# environment:
# - POSTGRES_DB=rosmorport_db
# - POSTGRES_USER=postgres
# - POSTGRES_PASSWORD=postgres
# volumes:
# - postgres_data:/var/lib/postgresql/data
# ports:
# - "5432:5432"
# healthcheck:
# test: ["CMD-SHELL", "pg_isready -U postgres"]
# interval: 10s
# timeout: 5s
# retries: 5
# Именованные тома для хранения данных
volumes:
django_staticfiles: