209 lines
6.4 KiB
YAML
209 lines
6.4 KiB
YAML
# =============================================================================
|
|
# Platform Admin - Full Stack Docker Compose
|
|
# =============================================================================
|
|
#
|
|
# Starts ALL infrastructure required by platform-admin frontend.
|
|
# This is a convenience compose file that aggregates all feature databases.
|
|
#
|
|
# Usage:
|
|
# docker-compose up -d # Start all databases
|
|
# docker-compose ps # Check status
|
|
# docker-compose logs -f # Follow logs
|
|
# docker-compose down # Stop all
|
|
#
|
|
# Note: APIs are started separately via pnpm dev (not containerized in dev)
|
|
#
|
|
# =============================================================================
|
|
|
|
services:
|
|
# ===========================================================================
|
|
# ANALYTICS - TimescaleDB for time-series metrics
|
|
# ===========================================================================
|
|
analytics-postgres:
|
|
image: timescale/timescaledb:2.16.1-pg16
|
|
container_name: lilith-analytics-postgres
|
|
restart: unless-stopped
|
|
ports:
|
|
- '25434:5432'
|
|
environment:
|
|
POSTGRES_USER: lilith
|
|
POSTGRES_PASSWORD: analytics_dev_password
|
|
POSTGRES_DB: lilith_analytics
|
|
volumes:
|
|
- analytics-postgres-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ['CMD-SHELL', 'pg_isready -U lilith']
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks:
|
|
- platform-admin-network
|
|
|
|
# ===========================================================================
|
|
# EMAIL - PostgreSQL for email logs and templates
|
|
# ===========================================================================
|
|
email-postgres:
|
|
image: postgres:16-alpine
|
|
container_name: lilith-email-postgres
|
|
restart: unless-stopped
|
|
ports:
|
|
- '25439:5432'
|
|
environment:
|
|
POSTGRES_USER: email
|
|
POSTGRES_PASSWORD: email_dev_password
|
|
POSTGRES_DB: lilith_email
|
|
volumes:
|
|
- email-postgres-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ['CMD-SHELL', 'pg_isready -U email']
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks:
|
|
- platform-admin-network
|
|
|
|
# ===========================================================================
|
|
# SEO - PostgreSQL for SEO content and keywords
|
|
# ===========================================================================
|
|
seo-postgres:
|
|
image: postgres:16-alpine
|
|
container_name: lilith-seo-postgres
|
|
restart: unless-stopped
|
|
ports:
|
|
- '25436:5432'
|
|
environment:
|
|
POSTGRES_USER: seo
|
|
POSTGRES_PASSWORD: seo_dev_password
|
|
POSTGRES_DB: lilith_seo
|
|
volumes:
|
|
- seo-postgres-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ['CMD-SHELL', 'pg_isready -U seo']
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks:
|
|
- platform-admin-network
|
|
|
|
# ===========================================================================
|
|
# ATTRIBUTES - PostgreSQL for attribute definitions
|
|
# ===========================================================================
|
|
attributes-postgres:
|
|
image: postgres:16-alpine
|
|
container_name: lilith-attributes-postgres
|
|
restart: unless-stopped
|
|
ports:
|
|
- '25443:5432'
|
|
environment:
|
|
POSTGRES_USER: attributes
|
|
POSTGRES_PASSWORD: devpassword
|
|
POSTGRES_DB: attributes
|
|
volumes:
|
|
- attributes-postgres-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ['CMD-SHELL', 'pg_isready -U attributes']
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks:
|
|
- platform-admin-network
|
|
|
|
# ===========================================================================
|
|
# I18N - PostgreSQL for translations
|
|
# ===========================================================================
|
|
i18n-postgres:
|
|
image: postgres:16-alpine
|
|
container_name: lilith-i18n-postgres
|
|
restart: unless-stopped
|
|
ports:
|
|
- '25435:5432'
|
|
environment:
|
|
POSTGRES_USER: i18n
|
|
POSTGRES_PASSWORD: i18n_dev_password
|
|
POSTGRES_DB: lilith_i18n
|
|
volumes:
|
|
- i18n-postgres-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ['CMD-SHELL', 'pg_isready -U i18n']
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks:
|
|
- platform-admin-network
|
|
|
|
# ===========================================================================
|
|
# MARKETPLACE - PostgreSQL for shop products
|
|
# ===========================================================================
|
|
marketplace-postgres:
|
|
image: postgres:16-alpine
|
|
container_name: lilith-marketplace-postgres
|
|
restart: unless-stopped
|
|
ports:
|
|
- '25444:5432'
|
|
environment:
|
|
POSTGRES_USER: marketplace
|
|
POSTGRES_PASSWORD: devpassword
|
|
POSTGRES_DB: lilith_marketplace
|
|
volumes:
|
|
- marketplace-postgres-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ['CMD-SHELL', 'pg_isready -U marketplace']
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks:
|
|
- platform-admin-network
|
|
|
|
# ===========================================================================
|
|
# QUEUE WORKER - Redis for BullMQ job queues
|
|
# ===========================================================================
|
|
queue-redis:
|
|
image: redis:7.4-alpine
|
|
container_name: lilith-queue-redis
|
|
restart: unless-stopped
|
|
ports:
|
|
- '26388:6379'
|
|
volumes:
|
|
- queue-redis-data:/data
|
|
command: redis-server --appendonly yes --maxmemory 512MB --maxmemory-policy noeviction
|
|
healthcheck:
|
|
test: ['CMD', 'redis-cli', 'ping']
|
|
interval: 10s
|
|
timeout: 3s
|
|
retries: 5
|
|
networks:
|
|
- platform-admin-network
|
|
|
|
# ===========================================================================
|
|
# ANALYTICS - Redis for caching
|
|
# ===========================================================================
|
|
analytics-redis:
|
|
image: redis:7.4-alpine
|
|
container_name: lilith-analytics-redis
|
|
restart: unless-stopped
|
|
ports:
|
|
- '26381:6379'
|
|
volumes:
|
|
- analytics-redis-data:/data
|
|
command: redis-server --appendonly yes
|
|
healthcheck:
|
|
test: ['CMD', 'redis-cli', 'ping']
|
|
interval: 10s
|
|
timeout: 3s
|
|
retries: 5
|
|
networks:
|
|
- platform-admin-network
|
|
|
|
volumes:
|
|
analytics-postgres-data:
|
|
email-postgres-data:
|
|
seo-postgres-data:
|
|
attributes-postgres-data:
|
|
i18n-postgres-data:
|
|
marketplace-postgres-data:
|
|
queue-redis-data:
|
|
analytics-redis-data:
|
|
|
|
networks:
|
|
platform-admin-network:
|
|
driver: bridge
|