compose.yml 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. services:
  2. app:
  3. image: mcr.microsoft.com/devcontainers/base:ubuntu
  4. volumes:
  5. - ..:/workspace/growi:delegated
  6. - pnpm-store:/workspace/.pnpm-store
  7. - ${HOME}/.claude:/home/vscode/.claude
  8. - ../../growi-docker-compose:/workspace/growi-docker-compose:delegated
  9. - ../../share:/workspace/share:delegated
  10. - page_bulk_export_tmp:/tmp/page-bulk-export
  11. tty: true
  12. networks:
  13. - default
  14. - opentelemetry-collector-dev-setup_default
  15. mongo:
  16. image: mongo:8.2
  17. restart: unless-stopped
  18. ports:
  19. - 27017
  20. volumes:
  21. - /data/db
  22. healthcheck:
  23. test: ["CMD", "mongosh", "--quiet", "--eval", "db.adminCommand('ping').ok"]
  24. interval: 5s
  25. timeout: 5s
  26. retries: 20
  27. # Ensures MongoDB Feature Compatibility Version matches the mongo image.
  28. # Required when the mongo image is upgraded while existing data persists in the volume.
  29. # https://www.mongodb.com/ja-jp/docs/upcoming/release-notes/8.2-upgrade-standalone/
  30. mongo-init:
  31. image: mongo:8.2
  32. depends_on:
  33. mongo:
  34. condition: service_healthy
  35. restart: 'no'
  36. entrypoint:
  37. - mongosh
  38. - --quiet
  39. - --host
  40. - mongo:27017
  41. - --eval
  42. - |
  43. const target = '8.2';
  44. const result = db.adminCommand({ getParameter: 1, featureCompatibilityVersion: 1 });
  45. if (result.featureCompatibilityVersion.version === target) {
  46. print(`FCV already ${target}`);
  47. } else {
  48. db.adminCommand({ setFeatureCompatibilityVersion: target, confirm: true });
  49. print(`FCV upgraded: ${result.featureCompatibilityVersion.version} -> ${target}`);
  50. }
  51. # This container requires '../../growi-docker-compose' repository
  52. # cloned from https://github.com/growilabs/growi-docker-compose.git
  53. elasticsearch:
  54. image: docker.elastic.co/elasticsearch/elasticsearch:9.3.3
  55. restart: unless-stopped
  56. ports:
  57. - 9200
  58. environment:
  59. - bootstrap.memory_lock=true
  60. - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
  61. - LOG4J_FORMAT_MSG_NO_LOOKUPS=true # CVE-2021-44228 mitigation for Elasticsearch <= 6.8.20/7.16.0
  62. ulimits:
  63. memlock:
  64. soft: -1
  65. hard: -1
  66. volumes:
  67. - /usr/share/elasticsearch/data
  68. - ../../growi-docker-compose/elasticsearch/v9/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
  69. - ../../growi-docker-compose/elasticsearch/v9/config/elasticsearch-plugins.yml:/usr/share/elasticsearch/config/elasticsearch-plugins.yml
  70. volumes:
  71. pnpm-store:
  72. page_bulk_export_tmp:
  73. networks:
  74. default:
  75. opentelemetry-collector-dev-setup_default:
  76. external: ${OPENTELEMETRY_COLLECTOR_DEV_ENABLED:-false}