version: '3.8' services: # CDK Mint service prometheus: image: prom/prometheus:latest ports: - "9090:9090" volumes: - ./misc/provisioning/prometheus.yml:/etc/prometheus/prometheus.yml:ro command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.libraries=/etc/prometheus/console_libraries' - '--web.console.templates=/etc/prometheus/consoles' - '--web.enable-lifecycle' - '--enable-feature=otlp-write-receiver' extra_hosts: - "host.docker.internal:host-gateway" networks: - cdk # Grafana for visualization grafana: image: grafana/grafana:latest ports: - "3011:3000" volumes: - ./misc/provisioning/datasources:/etc/grafana/provisioning/datasources - ./misc/provisioning/dashboards:/etc/grafana/provisioning/dashboards environment: - GF_DASHBOARDS_JSON_ENABLED=true - GF_SECURITY_ADMIN_PASSWORD=admin - GF_PROVISIONING_PATHS=/etc/grafana/provisioning networks: - cdk mintd: build: context: . dockerfile: Dockerfile container_name: mint ports: - "8085:8085" environment: - CDK_MINTD_URL=https://example.com - CDK_MINTD_LN_BACKEND=fakewallet - CDK_MINTD_LISTEN_HOST=0.0.0.0 - CDK_MINTD_LISTEN_PORT=8085 - CDK_MINTD_MNEMONIC= # Database configuration - choose one: # Option 1: SQLite (embedded, no additional setup needed) - CDK_MINTD_DATABASE=sqlite # Option 2: ReDB (embedded, no additional setup needed) # - CDK_MINTD_DATABASE=redb # Option 3: PostgreSQL (requires postgres service, enable with: docker-compose --profile postgres up) # - CDK_MINTD_DATABASE=postgres # - CDK_MINTD_DATABASE_URL=postgresql://cdk_user:cdk_password@postgres:5432/cdk_mint # Cache configuration - CDK_MINTD_CACHE_BACKEND=memory # For Redis cache (requires redis service, enable with: docker-compose --profile redis up): # - CDK_MINTD_CACHE_REDIS_URL=redis://redis:6379 # - CDK_MINTD_CACHE_REDIS_KEY_PREFIX=cdk-mintd - CDK_MINTD_PROMETHEUS_ENABLED=true - CDK_MINTD_PROMETHEUS_ADDRESS=0.0.0.0 - CDK_MINTD_PROMETHEUS_PORT=9000 command: ["cdk-mintd"] depends_on: - prometheus - grafana networks: - cdk # Uncomment when using PostgreSQL: # depends_on: # - postgres # PostgreSQL database service # Enable with: docker-compose --profile postgres up # postgres: # image: postgres:16-alpine # container_name: mint_postgres # restart: unless-stopped # profiles: # - postgres # environment: # - POSTGRES_USER=cdk_user # - POSTGRES_PASSWORD=cdk_password # - POSTGRES_DB=cdk_mint # - POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C # ports: # - "5432:5432" # volumes: # - postgres_data:/var/lib/postgresql/data # healthcheck: # test: ["CMD-SHELL", "pg_isready -U cdk_user -d cdk_mint"] # interval: 10s # timeout: 5s # retries: 5 # Redis cache service (optional) # Enable with: docker-compose --profile redis up # redis: # image: redis:7-alpine # container_name: mint_redis # restart: unless-stopped # profiles: # - redis # ports: # - "6379:6379" # volumes: # - redis_data:/data # command: redis-server --save 60 1 --loglevel warning # healthcheck: # test: ["CMD", "redis-cli", "ping"] # interval: 10s # timeout: 3s # retries: 5 volumes: postgres_data: driver: local # redis_data: # driver: local networks: cdk: driver: bridge