services: app: # Сборка Docker образа build: context: . dockerfile: Dockerfile # build arguments (используются в Dockerfile) args: VERSION: ${VERSION:-dev} BUILD_DATE: ${BUILD_DATE:-unknown} VCS_REF: ${VCS_REF:-unknown} # Имя создаваемого образа image: python-project # Имя контейнера container_name: python-project-app # Файл переменных окружения # # Обычно содержит: # DATABASE_URL # REDIS_URL # API_KEYS env_file: - .env # Перезапуск контейнера при падении restart: unless-stopped # Проброс портов # # host:container ports: - "8000:8000" # Подключаемые тома # # Используются для: # • логов # • данных приложения volumes: - logs:/app/logs - data:/app/data # Зависимости сервиса # # Если используются другие сервисы # их можно добавить сюда # # depends_on: # - postgres # - redis # Ограничения ресурсов (опционально) # # Полезно для production deploy: resources: limits: cpus: "1.0" memory: 512M reservations: cpus: "0.25" memory: 128M # Healthcheck контейнера # # Проверяет доступность сервиса healthcheck: test: ["CMD", "python", "-c", "import socket; s=socket.socket(); s.connect(('127.0.0.1',8000)); s.close()"] interval: 30s timeout: 10s retries: 3 start_period: 30s # ========================================================== # PostgreSQL (пример базы данных) # ========================================================== # # Закомментировано по умолчанию. # Раскомментируйте при необходимости. # # postgres: # image: postgres:16 # # container_name: python-project-postgres # # environment: # POSTGRES_DB: app # POSTGRES_USER: app # POSTGRES_PASSWORD: app # # volumes: # - postgres_data:/var/lib/postgresql/data # # ports: # - "5432:5432" # ========================================================== # Redis (пример кеша / очереди) # ========================================================== # # redis: # image: redis:7 # # container_name: python-project-redis # # volumes: # - redis_data:/data # # ports: # - "6379:6379" # ============================================================ # Docker volumes # ============================================================ volumes: # Логи приложения logs: # Данные приложения data: # PostgreSQL data (если используется) # postgres_data: # Redis data (если используется) # redis_data: