docker-compose.yml 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. ## this is a docker compose file used to test all scenarios
  2. ## do not use it in production
  3. x-shared:
  4. speedtest-service: &speedtest-service
  5. environment:
  6. - PASSWORD=gimmeTheStats1337
  7. - [email protected]
  8. - ENABLE_ID_OBFUSCATION=true
  9. - MODE=standalone
  10. - REDACT_IP_ADDRESSES=true
  11. - TELEMETRY=true
  12. services:
  13. ###################### POSTGRESQL ################################
  14. pg:
  15. image: postgres:alpine
  16. environment:
  17. POSTGRES_PASSWORD: Not4SecureProduction
  18. POSTGRES_USER: librespeed
  19. volumes:
  20. # mount init script from source to create database tables
  21. - ../../results/telemetry_postgresql.sql:/docker-entrypoint-initdb.d/01-init.sql
  22. speedtest-debian-pg:
  23. build:
  24. context: ../..
  25. dockerfile: Dockerfile
  26. environment: &env_vars_pg
  27. - PASSWORD=gimmeTheStats1337
  28. - DB_HOSTNAME=pg
  29. - DB_NAME=librespeed
  30. - DB_PASSWORD=Not4SecureProduction
  31. - DB_TYPE=postgresql
  32. - DB_USERNAME=librespeed
  33. - [email protected]
  34. - ENABLE_ID_OBFUSCATION=true
  35. - MODE=standalone
  36. - REDACT_IP_ADDRESSES=true
  37. - TELEMETRY=true
  38. ports:
  39. - 9123:8080
  40. speedtest-alpine-pg:
  41. build:
  42. context: ../..
  43. dockerfile: Dockerfile.alpine
  44. environment: *env_vars_pg
  45. ports:
  46. - 9124:8080
  47. ####################### MYSQL ##############################
  48. mysql:
  49. image: mysql:lts
  50. environment:
  51. MYSQL_ROOT_PASSWORD: Not4SecureProduction
  52. MYSQL_USER: librespeed
  53. MYSQL_PASSWORD: Not4SecureProduction
  54. MYSQL_DATABASE: librespeed
  55. volumes:
  56. # mount init script from source to create database tables
  57. - ../../results/telemetry_mysql.sql:/docker-entrypoint-initdb.d/01-init.sql
  58. speedtest-debian-mysql:
  59. # check at http://localhost:9125/results/sanitycheck.php
  60. build:
  61. context: ../..
  62. dockerfile: Dockerfile
  63. environment: &env_vars_mysql
  64. - PASSWORD=gimmeTheStats1337
  65. - DB_HOSTNAME=mysql
  66. - DB_NAME=librespeed
  67. - DB_PASSWORD=Not4SecureProduction
  68. - DB_TYPE=mysql
  69. - DB_USERNAME=librespeed
  70. - [email protected]
  71. - ENABLE_ID_OBFUSCATION=true
  72. - MODE=standalone
  73. - REDACT_IP_ADDRESSES=true
  74. - TELEMETRY=true
  75. ports:
  76. - 9125:8080
  77. speedtest-alpine-mysql:
  78. build:
  79. context: ../..
  80. dockerfile: Dockerfile.alpine
  81. environment: *env_vars_mysql
  82. ports:
  83. - 9126:8080
  84. ####################### MSSQL ##############################
  85. mssql:
  86. image: mcr.microsoft.com/mssql/server:2022-latest
  87. environment:
  88. - ACCEPT_EULA=Y
  89. - SA_PASSWORD=Not4SecureProduction1337
  90. - MSSQL_PID=Express
  91. healthcheck:
  92. test:
  93. ["CMD-SHELL", "/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P $$SA_PASSWORD -C -Q 'SELECT 1' || exit 1"]
  94. interval: 10s
  95. retries: 5
  96. start_period: 30s
  97. mssql-init:
  98. image: mcr.microsoft.com/mssql/server:2022-latest
  99. depends_on:
  100. mssql:
  101. condition: service_healthy
  102. environment:
  103. - SA_PASSWORD=Not4SecureProduction1337
  104. volumes:
  105. - ../../results/telemetry_mssql.sql:/docker-entrypoint-initdb.d/01-init.sql:ro
  106. command: >
  107. bash -c '
  108. echo "Waiting for MSSQL to be ready...";
  109. until /opt/mssql-tools18/bin/sqlcmd -S mssql -U sa -P "$$SA_PASSWORD" -C -Q "SELECT 1"; do
  110. sleep 1;
  111. done;
  112. echo "Running init scripts...";
  113. for f in /docker-entrypoint-initdb.d/*.sql; do
  114. echo "Executing $$f...";
  115. /opt/mssql-tools18/bin/sqlcmd -S mssql -U sa -P "$$SA_PASSWORD" -C -i "$$f";
  116. done;
  117. echo "Initialization complete!";
  118. '
  119. speedtest-debian-mssql:
  120. build:
  121. context: ../..
  122. dockerfile: Dockerfile
  123. environment: &env_vars_mssql
  124. - PASSWORD=gimmeTheStats1337
  125. - DB_HOSTNAME=mssql
  126. - DB_NAME=librespeed
  127. - DB_PASSWORD=Not4SecureProduction1337
  128. - DB_TYPE=mssql
  129. - DB_USERNAME=sa
  130. - [email protected]
  131. - ENABLE_ID_OBFUSCATION=true
  132. - MODE=standalone
  133. - REDACT_IP_ADDRESSES=true
  134. - TELEMETRY=true
  135. ports:
  136. - 9130:8080
  137. speedtest-alpine-mssql:
  138. build:
  139. context: ../..
  140. dockerfile: Dockerfile.alpine
  141. environment: *env_vars_mssql
  142. ports:
  143. - 9131:8080
  144. ################ SQLITE ####################################
  145. speedtest-debian-sqlite:
  146. # check at http://localhost:9125/results/sanitycheck.php
  147. build:
  148. context: ../..
  149. dockerfile: Dockerfile
  150. environment: &env_vars_sqlite
  151. - PASSWORD=gimmeTheStats1337
  152. - [email protected]
  153. - ENABLE_ID_OBFUSCATION=true
  154. - MODE=standalone
  155. - REDACT_IP_ADDRESSES=true
  156. - TELEMETRY=true
  157. ports:
  158. - 9127:8080
  159. speedtest-alpine-sqlite:
  160. build:
  161. context: ../..
  162. dockerfile: Dockerfile.alpine
  163. environment: *env_vars_sqlite
  164. ports:
  165. - 9128:8080
  166. speedtest-alpine-sqlite-dual:
  167. <<: *speedtest-service
  168. build:
  169. context: ../..
  170. dockerfile: Dockerfile.alpine
  171. environment:
  172. - MODE=dual
  173. volumes:
  174. - ./servers.json:/servers.json:ro
  175. ports:
  176. - 9129:8080
  177. ############## TEST CONTAINER ###############################################################
  178. test-container:
  179. image: alpine
  180. depends_on:
  181. - pg
  182. - mysql
  183. - mssql-init
  184. - speedtest-alpine-mysql
  185. - speedtest-alpine-pg
  186. - speedtest-alpine-mssql
  187. volumes:
  188. - ./test-script.sh:/test-script.sh
  189. command:
  190. - sh
  191. - /test-script.sh