Files
2024-test-rosmorport/docker-compose.prod.yml
erjemin 8385e04103 refactor: Удалена ненужная папка logs
Причины:
- В production логи nginx хранятся в системной папке хоста
- В dev образ постоянно перестраивается, логи не накапливаются
- Логи не нужны для хранения в контейнере
Удалено:
- Папка logs из корня проекта
- mkdir -p /app/logs из Dockerfile
- Монтирование logs из docker-compose.yml и docker-compose.prod.yml
- Переменная TOUCH_RELOAD из settings.py и .env файлов
Результат: более clean и минималистичная структура проекта
2026-03-31 13:45:32 +03:00

130 lines
3.4 KiB
YAML

# 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