# 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: - public_media:/app/public/media - public_static:/app/public/static - database:/app/database # Перенаправляем порты 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 public_media: driver: local public_static: driver: local database: driver: local # Сеть для сервисов networks: default: name: rosmorport_network driver: bridge