docker-compose.yaml 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. version: '3.8'
  2. services:
  3. # CDK Mint service
  4. prometheus:
  5. image: prom/prometheus:latest
  6. ports:
  7. - "9090:9090"
  8. volumes:
  9. - ./misc/provisioning/prometheus.yml:/etc/prometheus/prometheus.yml:ro
  10. command:
  11. - '--config.file=/etc/prometheus/prometheus.yml'
  12. - '--storage.tsdb.path=/prometheus'
  13. - '--web.console.libraries=/etc/prometheus/console_libraries'
  14. - '--web.console.templates=/etc/prometheus/consoles'
  15. - '--web.enable-lifecycle'
  16. - '--enable-feature=otlp-write-receiver'
  17. extra_hosts:
  18. - "host.docker.internal:host-gateway"
  19. networks:
  20. - cdk
  21. # Grafana for visualization
  22. grafana:
  23. image: grafana/grafana:latest
  24. ports:
  25. - "3011:3000"
  26. volumes:
  27. - ./misc/provisioning/datasources:/etc/grafana/provisioning/datasources
  28. - ./misc/provisioning/dashboards:/etc/grafana/provisioning/dashboards
  29. environment:
  30. - GF_DASHBOARDS_JSON_ENABLED=true
  31. - GF_SECURITY_ADMIN_PASSWORD=admin
  32. - GF_PROVISIONING_PATHS=/etc/grafana/provisioning
  33. networks:
  34. - cdk
  35. mintd:
  36. build:
  37. context: .
  38. dockerfile: Dockerfile
  39. container_name: mint
  40. ports:
  41. - "8085:8085"
  42. environment:
  43. - CDK_MINTD_URL=https://example.com
  44. - CDK_MINTD_LN_BACKEND=fakewallet
  45. - CDK_MINTD_LISTEN_HOST=0.0.0.0
  46. - CDK_MINTD_LISTEN_PORT=8085
  47. - CDK_MINTD_MNEMONIC=
  48. # Database configuration - choose one:
  49. # Option 1: SQLite (embedded, no additional setup needed)
  50. - CDK_MINTD_DATABASE=sqlite
  51. # Option 2: ReDB (embedded, no additional setup needed)
  52. # - CDK_MINTD_DATABASE=redb
  53. # Option 3: PostgreSQL (requires postgres service, enable with: docker-compose --profile postgres up)
  54. # - CDK_MINTD_DATABASE=postgres
  55. # - CDK_MINTD_DATABASE_URL=postgresql://cdk_user:cdk_password@postgres:5432/cdk_mint
  56. # Cache configuration
  57. - CDK_MINTD_CACHE_BACKEND=memory
  58. # For Redis cache (requires redis service, enable with: docker-compose --profile redis up):
  59. # - CDK_MINTD_CACHE_REDIS_URL=redis://redis:6379
  60. # - CDK_MINTD_CACHE_REDIS_KEY_PREFIX=cdk-mintd
  61. - CDK_MINTD_PROMETHEUS_ENABLED=true
  62. - CDK_MINTD_PROMETHEUS_ADDRESS=0.0.0.0
  63. - CDK_MINTD_PROMETHEUS_PORT=9000
  64. command: ["cdk-mintd"]
  65. depends_on:
  66. - prometheus
  67. - grafana
  68. networks:
  69. - cdk
  70. # Uncomment when using PostgreSQL:
  71. # depends_on:
  72. # - postgres
  73. # LDK Node mint service - enable with: docker-compose --profile ldk-node up
  74. mintd-ldk-node:
  75. build:
  76. context: .
  77. dockerfile: Dockerfile.ldk-node
  78. container_name: mint-ldk-node
  79. profiles:
  80. - ldk-node
  81. ports:
  82. - "8086:8085" # Different port to avoid conflict with main mint
  83. environment:
  84. - CDK_MINTD_URL=https://example.com
  85. - CDK_MINTD_LN_BACKEND=ldk-node
  86. - CDK_MINTD_LISTEN_HOST=0.0.0.0
  87. - CDK_MINTD_LISTEN_PORT=8085
  88. - CDK_MINTD_MNEMONIC=
  89. # Database configuration
  90. - CDK_MINTD_DATABASE=sqlite
  91. # Cache configuration
  92. - CDK_MINTD_CACHE_BACKEND=memory
  93. - CDK_MINTD_PROMETHEUS_ENABLED=true
  94. - CDK_MINTD_PROMETHEUS_ADDRESS=0.0.0.0
  95. - CDK_MINTD_PROMETHEUS_PORT=9000
  96. # LDK Node specific configuration
  97. - CDK_MINTD_LDK_NODE_NETWORK=testnet
  98. - CDK_MINTD_LDK_NODE_ESPLORA_URL=https://blockstream.info/testnet/api
  99. - CDK_MINTD_LDK_NODE_LISTENING_ADDRESSES=0.0.0.0:9735
  100. volumes:
  101. # Persist LDK node data
  102. - ldk_node_data:/usr/src/app/ldk_node_data
  103. command: ["cdk-mintd"]
  104. depends_on:
  105. - prometheus
  106. - grafana
  107. networks:
  108. - cdk
  109. # PostgreSQL database service
  110. # Enable with: docker-compose --profile postgres up
  111. # postgres:
  112. # image: postgres:16-alpine
  113. # container_name: mint_postgres
  114. # restart: unless-stopped
  115. # profiles:
  116. # - postgres
  117. # environment:
  118. # - POSTGRES_USER=cdk_user
  119. # - POSTGRES_PASSWORD=cdk_password
  120. # - POSTGRES_DB=cdk_mint
  121. # - POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C
  122. # ports:
  123. # - "5432:5432"
  124. # volumes:
  125. # - postgres_data:/var/lib/postgresql/data
  126. # healthcheck:
  127. # test: ["CMD-SHELL", "pg_isready -U cdk_user -d cdk_mint"]
  128. # interval: 10s
  129. # timeout: 5s
  130. # retries: 5
  131. # Redis cache service (optional)
  132. # Enable with: docker-compose --profile redis up
  133. # redis:
  134. # image: redis:7-alpine
  135. # container_name: mint_redis
  136. # restart: unless-stopped
  137. # profiles:
  138. # - redis
  139. # ports:
  140. # - "6379:6379"
  141. # volumes:
  142. # - redis_data:/data
  143. # command: redis-server --save 60 1 --loglevel warning
  144. # healthcheck:
  145. # test: ["CMD", "redis-cli", "ping"]
  146. # interval: 10s
  147. # timeout: 3s
  148. # retries: 5
  149. volumes:
  150. postgres_data:
  151. driver: local
  152. ldk_node_data:
  153. driver: local
  154. # redis_data:
  155. # driver: local
  156. networks:
  157. cdk:
  158. driver: bridge