Пример локального docker-compose

This commit is contained in:
2026-03-07 01:38:44 +07:00
parent ef0c5e271f
commit 77eeb009aa

136
docker-compose.yml Normal file
View File

@@ -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: