codenuk_backend_mine/docker-compose.yml.backup
2025-10-10 08:56:39 +05:30

124 lines
3.3 KiB
Plaintext

version: '3.8'
services:
# =====================================
# Core Infrastructure Services
# =====================================
# PostgreSQL - Main database
postgres:
image: postgres:15
container_name: pipeline_postgres
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- postgres_data:/var/lib/postgresql/data
- ./databases/scripts/init.sql:/docker-entrypoint-initdb.d/01-init.sql
- ./databases/scripts/schemas.sql:/docker-entrypoint-initdb.d/02-schemas.sql
ports:
- "5432:5432"
networks:
- pipeline_network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 30s
timeout: 10s
retries: 5
restart: unless-stopped
# Redis - Caching, queues, and real-time data
redis:
image: redis:7-alpine
container_name: pipeline_redis
command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD}
volumes:
- redis_data:/data
ports:
- "6379:6379"
networks:
- pipeline_network
healthcheck:
test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]
interval: 30s
timeout: 10s
retries: 3
restart: unless-stopped
# MongoDB - Document storage for generated code and templates
mongodb:
image: mongo:7
container_name: pipeline_mongodb
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
MONGO_INITDB_DATABASE: code_repository
volumes:
- mongodb_data:/data/db
- ./databases/scripts/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js
ports:
- "27017:27017"
networks:
- pipeline_network
restart: unless-stopped
# RabbitMQ - Message queue for service communication
rabbitmq:
build:
context: ./infrastructure/rabbitmq
dockerfile: Dockerfile
container_name: pipeline_rabbitmq
hostname: rabbitmq-server
environment:
RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER}
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS}
RABBITMQ_DEFAULT_VHOST: /
RABBITMQ_DEFINITIONS_FILE: /etc/rabbitmq/definitions.json
RABBITMQ_CONFIG_FILE: /etc/rabbitmq/rabbitmq.conf
volumes:
- rabbitmq_data:/var/lib/rabbitmq
- rabbitmq_logs:/var/log/rabbitmq
ports:
- "5672:5672" # AMQP port
- "15672:15672" # Management UI
networks:
- pipeline_network
healthcheck:
test: ["CMD", "rabbitmq-diagnostics", "ping"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
# =====================================
# Volumes
# =====================================
volumes:
postgres_data:
driver: local
redis_data:
driver: local
mongodb_data:
driver: local
rabbitmq_data:
driver: local
rabbitmq_logs:
driver: local
# =====================================
# Networks
# =====================================
networks:
pipeline_network:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16