Пример локального docker-compose
This commit is contained in:
136
docker-compose.yml
Normal file
136
docker-compose.yml
Normal 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:
|
||||||
Reference in New Issue
Block a user