Files
DevOpsLab/app/docker-compose.yml
Сергей Антропов 1fbf9185a2 feat: добавлена пометка типа операции (Build/Push) в истории сборок Dockerfile
- Добавлена колонка 'Тип' во все таблицы истории сборок
- Для push операций отображается registry вместо платформ
- Сохранение пользователя при создании push лога
- Исправлена ошибка с logger в push_docker_image endpoint
- Улучшено отображение истории сборок с визуальными индикаторами
2026-02-15 22:59:02 +03:00

178 lines
5.4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Docker Compose для веб-интерфейса DevOpsLab
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
# version: '3.8' # Устарело в новых версиях docker-compose
services:
# PostgreSQL база данных
postgres:
image: postgres:16
container_name: devopslab-postgres
environment:
- POSTGRES_USER=${POSTGRES_USER:-devopslab}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-devopslab123}
- POSTGRES_DB=${POSTGRES_DB:-devopslab}
- TZ=Europe/Moscow
ports:
- "5432:5432"
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-devopslab}"]
interval: 10s
timeout: 5s
retries: 5
networks:
- devopslab-network
restart: unless-stopped
# Веб-интерфейс
web:
build:
context: .
dockerfile: Dockerfile
container_name: devopslab-web
ports:
- "8000:8000"
volumes:
# Монтируем весь проект для доступа к roles, molecule, etc.
- ../:/workspace:rw
# Монтируем весь код приложения для hot reload
- .:/app/app:rw
# Docker socket для управления контейнерами
- /var/run/docker.sock:/var/run/docker.sock:rw
environment:
- PROJECT_ROOT=/workspace
- PROJECT_NAME=devops-lab
- API_HOST=0.0.0.0
- API_PORT=8000
- API_RELOAD=true
- DATABASE_URL=postgresql+asyncpg://${POSTGRES_USER:-devopslab}:${POSTGRES_PASSWORD:-devopslab123}@postgres:5432/${POSTGRES_DB:-devopslab}
- REDIS_URL=redis://redis:6379/0
- DOCKER_HOST=unix:///var/run/docker.sock
- ANSIBLE_FORCE_COLOR=1
- ANSIBLE_STDOUT_CALLBACK=yaml
- SECRET_KEY=${SECRET_KEY:-dev-secret-key-change-in-production}
- LOG_LEVEL=${LOG_LEVEL:-INFO}
- PYTHONPATH=/app
- TZ=Europe/Moscow
depends_on:
- redis
networks:
- devopslab-network
restart: unless-stopped
# Redis для Celery
redis:
image: redis:7-alpine
container_name: devopslab-redis
ports:
- "6379:6379"
volumes:
- redis-data:/data
environment:
- TZ=Europe/Moscow
networks:
- devopslab-network
restart: unless-stopped
command: redis-server --appendonly yes
# Celery worker для фоновых задач
celery-worker:
build:
context: .
dockerfile: Dockerfile
container_name: devopslab-celery-worker
command: celery -A app.tasks.celery_tasks worker --loglevel=info
volumes:
- ../:/workspace:rw
- ./api:/app/app/api:rw
- ./core:/app/app/core:rw
- ./models:/app/app/models:rw
- ./services:/app/app/services:rw
- ./templates:/app/app/templates:rw
- ./static:/app/app/static:rw
- ./tasks:/app/app/tasks:rw
- ./db:/app/app/db:rw
- ./main.py:/app/app/main.py:rw
- /var/run/docker.sock:/var/run/docker.sock:rw
environment:
- PROJECT_ROOT=/workspace
- DATABASE_URL=postgresql+asyncpg://${POSTGRES_USER:-devopslab}:${POSTGRES_PASSWORD:-devopslab123}@postgres:5432/${POSTGRES_DB:-devopslab}
- REDIS_URL=redis://redis:6379/0
- DOCKER_HOST=unix:///var/run/docker.sock
- PYTHONPATH=/app
- TZ=Europe/Moscow
depends_on:
- redis
- web
networks:
- devopslab-network
restart: unless-stopped
# Celery beat для периодических задач (опционально)
celery-beat:
build:
context: .
dockerfile: Dockerfile
container_name: devopslab-celery-beat
command: celery -A app.tasks.celery_tasks beat --loglevel=info
volumes:
- ../:/workspace:rw
- ./api:/app/app/api:rw
- ./core:/app/app/core:rw
- ./models:/app/app/models:rw
- ./services:/app/app/services:rw
- ./tasks:/app/app/tasks:rw
- ./db:/app/app/db:rw
- ./main.py:/app/app/main.py:rw
environment:
- PROJECT_ROOT=/workspace
- DATABASE_URL=postgresql+asyncpg://${POSTGRES_USER:-devopslab}:${POSTGRES_PASSWORD:-devopslab123}@postgres:5432/${POSTGRES_DB:-devopslab}
- REDIS_URL=redis://redis:6379/0
depends_on:
- redis
- web
networks:
- devopslab-network
restart: unless-stopped
# Docker Builder - отдельное приложение для сборки Docker образов
docker-builder:
build:
context: ./docker_builder
dockerfile: Dockerfile
container_name: devopslab-docker-builder
ports:
- "8001:8001"
volumes:
# Монтируем весь проект для доступа к Dockerfile
- ../:/workspace:rw
# Монтируем код приложения для hot reload
- ./docker_builder/main.py:/app/main.py:ro
# Docker socket для сборки образов
- /var/run/docker.sock:/var/run/docker.sock:rw
environment:
- DOCKER_HOST=unix:///var/run/docker.sock
- PORT=8001
- PYTHONUNBUFFERED=1
- DATABASE_URL=postgresql+asyncpg://${POSTGRES_USER:-devopslab}:${POSTGRES_PASSWORD:-devopslab123}@postgres:5432/${POSTGRES_DB:-devopslab}
- TZ=Europe/Moscow
networks:
- devopslab-network
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8001/health"]
interval: 30s
timeout: 10s
retries: 3
volumes:
redis-data:
postgres-data:
networks:
devopslab-network:
driver: bridge