diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e669081 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,136 @@ +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: