docker-compose.yml 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. volumes:
  2. data:
  3. services:
  4. test_unit:
  5. build:
  6. context: ../..
  7. dockerfile: services/web/Dockerfile
  8. target: base
  9. volumes:
  10. - .:/overleaf/services/web
  11. - ../../.pnp.cjs:/overleaf/.pnp.cjs
  12. - ../../.pnp.loader.mjs:/overleaf/.pnp.loader.mjs
  13. - ../../.pnp.register.mjs:/overleaf/.pnp.register.mjs
  14. - ../../libraries:/overleaf/libraries
  15. - ../../bin/shared/wait_for_it:/overleaf/bin/shared/wait_for_it
  16. - ../../tools/migrations:/overleaf/tools/migrations
  17. - ../../tsconfig.backend.json:/overleaf/tsconfig.backend.json
  18. - ../../package.json:/overleaf/package.json
  19. - ../../.yarnrc.yml:/overleaf/.yarnrc.yml
  20. - ../../yarn.lock:/overleaf/yarn.lock
  21. - ../../.yarn:/overleaf/.yarn
  22. working_dir: /overleaf/services/web
  23. env_file: docker-compose.common.env
  24. environment:
  25. BASE_CONFIG:
  26. OVERLEAF_CONFIG:
  27. CI:
  28. MODULE_NAME:
  29. JUNIT_ROOT_SUITE_NAME:
  30. COVERAGE_UNIT_TESTS: ${COVERAGE_UNIT_TESTS:-}
  31. MOCHA_GREP: ${MOCHA_GREP:-}
  32. LOG_LEVEL: ${LOG_LEVEL:-}
  33. NODE_ENV: test
  34. NODE_OPTIONS: "--require /overleaf/.pnp.cjs --import /overleaf/.pnp.register.mjs --unhandled-rejections=strict"
  35. REDIS_HOST: redis_test
  36. MONOREPO:
  37. entrypoint: /overleaf/bin/shared/wait_for_it mongo:27017 --timeout=60 --
  38. command: yarn run --silent test:unit:app
  39. user: node
  40. depends_on:
  41. - mongo
  42. - redis_test
  43. test_acceptance:
  44. build:
  45. context: ../..
  46. dockerfile: services/web/Dockerfile
  47. target: base
  48. volumes:
  49. - .:/overleaf/services/web
  50. - ../../.pnp.cjs:/overleaf/.pnp.cjs
  51. - ../../.pnp.loader.mjs:/overleaf/.pnp.loader.mjs
  52. - ../../.pnp.register.mjs:/overleaf/.pnp.register.mjs
  53. - ../../libraries:/overleaf/libraries
  54. - ../../bin/shared/wait_for_it:/overleaf/bin/shared/wait_for_it
  55. - ../../tools/migrations:/overleaf/tools/migrations
  56. - ../../package.json:/overleaf/package.json
  57. - ../../.yarnrc.yml:/overleaf/.yarnrc.yml
  58. - ../../yarn.lock:/overleaf/yarn.lock
  59. - ../../.yarn:/overleaf/.yarn
  60. user: node
  61. working_dir: /overleaf/services/web
  62. env_file: docker-compose.common.env
  63. environment:
  64. BASE_CONFIG:
  65. OVERLEAF_CONFIG:
  66. CI:
  67. MODULE_NAME:
  68. JUNIT_ROOT_SUITE_NAME:
  69. COVERAGE_ACCEPTANCE_TESTS: ${COVERAGE_ACCEPTANCE_TESTS:-}
  70. MOCHA_GREP: ${MOCHA_GREP:-}
  71. LOG_LEVEL: ${LOG_LEVEL:-}
  72. MONGO_SERVER_SELECTION_TIMEOUT: 600000
  73. MONGO_SOCKET_TIMEOUT: 300000
  74. NODE_OPTIONS: "--require /overleaf/.pnp.cjs --import /overleaf/.pnp.register.mjs --unhandled-rejections=strict"
  75. REDIS_HOST: redis_test
  76. MONOREPO:
  77. RETRIES:
  78. # OVERLEAF_ALLOW_ANONYMOUS_READ_AND_WRITE_SHARING: 'true'
  79. extra_hosts:
  80. - "www.overleaf.test:127.0.0.1"
  81. depends_on:
  82. - redis_test
  83. - mongo
  84. - saml
  85. - ldap
  86. entrypoint: /overleaf/bin/shared/wait_for_it mongo:27017 --timeout=60 --
  87. command: yarn run --silent test:acceptance:app
  88. test_frontend_jsdom:
  89. build:
  90. context: ../..
  91. dockerfile: services/web/Dockerfile
  92. target: base
  93. volumes:
  94. - .:/overleaf/services/web
  95. - ../../.pnp.cjs:/overleaf/.pnp.cjs
  96. - ../../.pnp.loader.mjs:/overleaf/.pnp.loader.mjs
  97. - ../../.pnp.register.mjs:/overleaf/.pnp.register.mjs
  98. - ../../libraries:/overleaf/libraries
  99. - ../../package.json:/overleaf/package.json
  100. - ../../.yarnrc.yml:/overleaf/.yarnrc.yml
  101. - ../../yarn.lock:/overleaf/yarn.lock
  102. - ../../.yarn:/overleaf/.yarn
  103. working_dir: /overleaf/services/web
  104. environment:
  105. CI:
  106. JUNIT_ROOT_SUITE_NAME:
  107. MOCHA_GREP: ${MOCHA_GREP}
  108. NODE_OPTIONS: "--require /overleaf/.pnp.cjs --import /overleaf/.pnp.register.mjs --unhandled-rejections=strict"
  109. VERBOSE_LOGGING:
  110. command: yarn run --silent test:frontend
  111. user: node
  112. test_frontend_ct:
  113. build:
  114. context: ../../dockerfiles/cypress
  115. args:
  116. - USER_UID
  117. - USER_GID
  118. volumes:
  119. - .:/overleaf/services/web
  120. - ../../scripts:/overleaf/scripts:ro
  121. - ../../.pnp.cjs:/overleaf/.pnp.cjs
  122. - ../../.pnp.loader.mjs:/overleaf/.pnp.loader.mjs
  123. - ../../.pnp.register.mjs:/overleaf/.pnp.register.mjs
  124. - ../../libraries:/overleaf/libraries
  125. - ../../package.json:/overleaf/package.json
  126. - ../../.yarnrc.yml:/overleaf/.yarnrc.yml
  127. - ../../yarn.lock:/overleaf/yarn.lock
  128. - ../../.yarn:/overleaf/.yarn
  129. working_dir: /overleaf/services/web
  130. environment:
  131. VERBOSE_LOGGING:
  132. CI:
  133. JUNIT_ROOT_SUITE_NAME:
  134. CYPRESS_SPEC_PATTERN: ${CYPRESS_SPEC_PATTERN:-}
  135. CYPRESS_EXCLUDE_SPEC_PATTERN: ${CYPRESS_EXCLUDE_SPEC_PATTERN:-}
  136. NODE_OPTIONS: "--require /overleaf/.pnp.cjs --import /overleaf/.pnp.register.mjs"
  137. entrypoint: yarn
  138. command:
  139. - "run"
  140. - "cypress:run-ct"
  141. test_writefull:
  142. build:
  143. context: ../..
  144. dockerfile: services/web/Dockerfile
  145. target: base
  146. volumes:
  147. - .:/overleaf/services/web
  148. - ../../.pnp.cjs:/overleaf/.pnp.cjs
  149. - ../../.pnp.loader.mjs:/overleaf/.pnp.loader.mjs
  150. - ../../.pnp.register.mjs:/overleaf/.pnp.register.mjs
  151. - ../../libraries:/overleaf/libraries
  152. - ../../package.json:/overleaf/package.json
  153. - ../../.yarnrc.yml:/overleaf/.yarnrc.yml
  154. - ../../yarn.lock:/overleaf/yarn.lock
  155. - ../../.yarn:/overleaf/.yarn
  156. working_dir: /overleaf/services/web
  157. environment:
  158. CI:
  159. JUNIT_ROOT_SUITE_NAME:
  160. NODE_OPTIONS: "--require /overleaf/.pnp.cjs --import /overleaf/.pnp.register.mjs --unhandled-rejections=strict"
  161. VERBOSE_LOGGING:
  162. command: yarn run --silent test:writefull
  163. user: node
  164. redis_test:
  165. image: redis:7.4.8
  166. mongo:
  167. image: mongo:8.0.11
  168. command: --replSet overleaf --notablescan
  169. volumes:
  170. - ../../bin/shared/mongodb-init-replica-set.js:/docker-entrypoint-initdb.d/mongodb-init-replica-set.js
  171. - ../../bin/shared/mongodb-docker-entrypoint-wait.sh:/mongodb-docker-entrypoint-wait.sh
  172. entrypoint: /mongodb-docker-entrypoint-wait.sh
  173. environment:
  174. MONGO_INITDB_DATABASE: sharelatex
  175. extra_hosts:
  176. # Required when using the automatic database setup for initializing the
  177. # replica set. This override is not needed when running the setup after
  178. # starting up mongo.
  179. - mongo:127.0.0.1
  180. ldap:
  181. image: rroemhild/test-openldap:1.1
  182. # Workaround large memory allocation (using the max-open-files-limit as socket buffer scale).
  183. # REF: https://github.com/moby/moby/issues/8231#issuecomment-63877553
  184. # REF: https://github.com/moby/moby/issues/8231#issuecomment-63871343
  185. command:
  186. - "bash"
  187. - "-c"
  188. - "ulimit -n 1024 && exec bash /run.sh"
  189. saml:
  190. image: us-east1-docker.pkg.dev/overleaf-ops/ol-docker/saml-test
  191. environment:
  192. SAML_BASE_URL_PATH: "http://saml/simplesaml/"
  193. SAML_TEST_SP_ENTITY_ID: "overleaf-test-saml"
  194. SAML_TEST_SP_LOCATION: "http://www.overleaf.test:23000/saml/callback"