docker-compose.yml 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. # This contains the services required to develop and test Vendure
  2. # locally. It includes multiple SQL databases (for testing specific
  3. # versions), Elasticsearch, Redis etc.
  4. name: vendure-monorepo
  5. services:
  6. mariadb:
  7. image: 'mariadb:latest'
  8. container_name: mariadb
  9. environment:
  10. MARIADB_DATABASE: vendure-dev
  11. MARIADB_USER: vendure
  12. MARIADB_PASSWORD: password
  13. MARIADB_ROOT_PASSWORD: password
  14. volumes:
  15. - 'mariadb_data:/var/lib/mysql'
  16. ports:
  17. - '3306:3306'
  18. mysql_8:
  19. image: mysql:8.0
  20. container_name: mysql-8
  21. environment:
  22. MYSQL_DATABASE: vendure-dev
  23. MYSQL_USER: vendure
  24. MYSQL_PASSWORD: password
  25. MYSQL_ROOT_PASSWORD: password
  26. volumes:
  27. - 'mysql_data:/var/lib/mysql'
  28. ports:
  29. - '3306:3306'
  30. mysql_5:
  31. image: mysql:5.7
  32. container_name: mysql-5.7
  33. environment:
  34. MYSQL_DATABASE: vendure-dev
  35. MYSQL_USER: vendure
  36. MYSQL_PASSWORD: password
  37. MYSQL_ROOT_PASSWORD: password
  38. volumes:
  39. - 'mysql_data:/var/lib/mysql'
  40. ports:
  41. - '3306:3306'
  42. postgres_12:
  43. image: postgres:12.3
  44. container_name: postgres_12
  45. environment:
  46. POSTGRES_DB: vendure-dev
  47. POSTGRES_USER: vendure
  48. POSTGRES_PASSWORD: password
  49. PGDATA: /var/lib/postgresql/data
  50. volumes:
  51. - postgres_12_data:/var/lib/postgresql/data
  52. ports:
  53. - '5432:5432'
  54. command: postgres -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all -c pg_stat_statements.max=100000 -c max_connections=200
  55. postgres_16:
  56. image: postgres:16
  57. container_name: postgres_16
  58. environment:
  59. POSTGRES_DB: vendure-dev
  60. POSTGRES_USER: vendure
  61. POSTGRES_PASSWORD: password
  62. PGDATA: /var/lib/postgresql/data
  63. volumes:
  64. - postgres_16_data:/var/lib/postgresql/data
  65. ports:
  66. - '5432:5432'
  67. command: postgres -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all -c pg_stat_statements.max=100000 -c max_connections=200
  68. # This is the Keycloak service which is used
  69. # to test the Keycloak auth strategy
  70. keycloak:
  71. image: quay.io/keycloak/keycloak
  72. ports:
  73. - '9000:8080'
  74. environment:
  75. KEYCLOAK_ADMIN: admin
  76. KEYCLOAK_ADMIN_PASSWORD: admin
  77. command:
  78. - start-dev
  79. - --import-realm
  80. volumes:
  81. - keycloak_data:/opt/keycloak/data
  82. elasticsearch:
  83. image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
  84. container_name: elasticsearch
  85. environment:
  86. - discovery.type=single-node
  87. - bootstrap.memory_lock=true
  88. - 'ES_JAVA_OPTS=-Xms512m -Xmx512m'
  89. ulimits:
  90. memlock:
  91. soft: -1
  92. hard: -1
  93. volumes:
  94. - esdata:/usr/share/elasticsearch/data
  95. ports:
  96. - 9200:9200
  97. redis:
  98. image: redis:7.2-alpine
  99. hostname: redis
  100. environment: []
  101. ports:
  102. - '6379:6379'
  103. jaeger:
  104. image: jaegertracing/all-in-one:latest
  105. container_name: jaeger
  106. ports:
  107. - '4318:4318' # OTLP HTTP receiver
  108. - '16686:16686' # Web UI
  109. environment:
  110. - COLLECTOR_OTLP_ENABLED=true
  111. volumes:
  112. - jaeger_data:/badger
  113. loki:
  114. image: grafana/loki:3.4
  115. ports:
  116. - '3100:3100'
  117. networks:
  118. - loki
  119. grafana:
  120. environment:
  121. - GF_PATHS_PROVISIONING=/etc/grafana/provisioning
  122. - GF_AUTH_ANONYMOUS_ENABLED=true
  123. - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
  124. - GF_FEATURE_TOGGLES_ENABLE=alertingSimplifiedRouting,alertingQueryAndExpressionsStepMode
  125. image: grafana/grafana:latest
  126. ports:
  127. - '3200:3000'
  128. volumes:
  129. - grafana-storage:/var/lib/grafana
  130. networks:
  131. - loki
  132. networks:
  133. loki:
  134. driver: bridge
  135. volumes:
  136. postgres_16_data:
  137. driver: local
  138. postgres_12_data:
  139. driver: local
  140. mariadb_data:
  141. driver: local
  142. mysql_data:
  143. driver: local
  144. keycloak_data:
  145. driver: local
  146. esdata:
  147. driver: local
  148. jaeger_data:
  149. driver: local
  150. grafana-storage:
  151. driver: local