docker-compose.yml 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  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. version: '3.7'
  5. name: vendure-monorepo
  6. services:
  7. mariadb:
  8. image: 'bitnami/mariadb:latest'
  9. container_name: mariadb
  10. environment:
  11. MARIADB_DATABASE: vendure-dev
  12. MARIADB_ROOT_USER: vendure
  13. MARIADB_ROOT_PASSWORD: password
  14. volumes:
  15. - 'mariadb_data:/bitnami'
  16. ports:
  17. - '3306:3306'
  18. mysql_8:
  19. image: bitnami/mysql:8.0
  20. container_name: mysql-8
  21. environment:
  22. MYSQL_AUTHENTICATION_PLUGIN: mysql_native_password
  23. MYSQL_DATABASE: vendure-dev
  24. MYSQL_ROOT_USER: vendure
  25. MYSQL_ROOT_PASSWORD: password
  26. volumes:
  27. - 'mysql_data:/bitnami'
  28. ports:
  29. - '3306:3306'
  30. mysql_5:
  31. image: bitnami/mysql:5.7
  32. container_name: mysql-5.7
  33. environment:
  34. MYSQL_AUTHENTICATION_PLUGIN: mysql_native_password
  35. MYSQL_DATABASE: vendure-dev
  36. MYSQL_ROOT_USER: vendure
  37. MYSQL_ROOT_PASSWORD: password
  38. volumes:
  39. - 'mysql_data:/bitnami'
  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. - ALLOW_EMPTY_PASSWORD=yes
  102. ports:
  103. - '6379:6379'
  104. jaeger:
  105. image: jaegertracing/all-in-one:latest
  106. container_name: jaeger
  107. ports:
  108. - '4318:4318' # OTLP HTTP receiver
  109. - '16686:16686' # Web UI
  110. environment:
  111. - COLLECTOR_OTLP_ENABLED=true
  112. volumes:
  113. - jaeger_data:/badger
  114. loki:
  115. image: grafana/loki:3.4
  116. ports:
  117. - '3100:3100'
  118. networks:
  119. - loki
  120. grafana:
  121. environment:
  122. - GF_PATHS_PROVISIONING=/etc/grafana/provisioning
  123. - GF_AUTH_ANONYMOUS_ENABLED=true
  124. - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
  125. - GF_FEATURE_TOGGLES_ENABLE=alertingSimplifiedRouting,alertingQueryAndExpressionsStepMode
  126. entrypoint:
  127. - sh
  128. - -euc
  129. - |
  130. mkdir -p /etc/grafana/provisioning/datasources
  131. cat <<EOF > /etc/grafana/provisioning/datasources/ds.yaml
  132. apiVersion: 1
  133. datasources:
  134. - name: Loki
  135. type: loki
  136. access: proxy
  137. orgId: 1
  138. url: http://loki:3100
  139. basicAuth: false
  140. isDefault: true
  141. version: 1
  142. editable: false
  143. EOF
  144. /run.sh
  145. image: grafana/grafana:latest
  146. ports:
  147. - '3200:3000'
  148. networks:
  149. - loki
  150. networks:
  151. loki:
  152. driver: bridge
  153. volumes:
  154. postgres_16_data:
  155. driver: local
  156. postgres_12_data:
  157. driver: local
  158. mariadb_data:
  159. driver: local
  160. mysql_data:
  161. driver: local
  162. keycloak_data:
  163. driver: local
  164. esdata:
  165. driver: local
  166. jaeger_data:
  167. driver: local