compose.yml 2.7 KB

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