docker-compose.yml.j2 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. version: "3"
  2. services:
  3. redis:
  4. image: redis/redis-stack:6.2.6-v9
  5. restart: unless-stopped
  6. ports:
  7. - 6379:6379
  8. healthcheck:
  9. test: redis-cli ping
  10. interval: 10s
  11. timeout: 5s
  12. retries: 5
  13. {% if database == 'mysql' %}
  14. mysql:
  15. image: mysql/mysql-server
  16. restart: unless-stopped
  17. ports:
  18. - 3306:3306
  19. environment:
  20. MYSQL_ROOT_PASSWORD: root_pass
  21. MYSQL_DATABASE: gorse
  22. MYSQL_USER: gorse
  23. MYSQL_PASSWORD: gorse_pass
  24. volumes:
  25. - mysql_data:/var/lib/mysql
  26. healthcheck:
  27. test: mysqladmin ping
  28. interval: 10s
  29. timeout: 5s
  30. retries: 5
  31. {% elif database == 'postgres' %}
  32. postgres:
  33. image: postgres:10.0
  34. ports:
  35. - 5432:5432
  36. environment:
  37. POSTGRES_DB: gorse
  38. POSTGRES_USER: gorse
  39. POSTGRES_PASSWORD: gorse_pass
  40. healthcheck:
  41. test: pg_isready
  42. interval: 10s
  43. timeout: 5s
  44. retries: 5
  45. {% elif database == 'mongo' %}
  46. mongo:
  47. image: mongo:4.0
  48. ports:
  49. - 27017:27017
  50. environment:
  51. MONGO_INITDB_DATABASE: gorse
  52. MONGO_INITDB_ROOT_USERNAME: root
  53. MONGO_INITDB_ROOT_PASSWORD: password
  54. healthcheck:
  55. test: mongo
  56. interval: 10s
  57. timeout: 5s
  58. retries: 5
  59. {% endif %}
  60. worker:
  61. build:
  62. context: .
  63. dockerfile: cmd/gorse-worker/Dockerfile
  64. restart: unless-stopped
  65. ports:
  66. - 8089:8089
  67. command: >
  68. --master-host master --master-port 8086
  69. --http-host 0.0.0.0 --http-port 8089
  70. --log-path /var/log/gorse/worker.log
  71. --cache-path /var/lib/gorse/worker_cache.data
  72. volumes:
  73. - gorse_log:/var/log/gorse
  74. - worker_data:/var/lib/gorse
  75. depends_on:
  76. - master
  77. server:
  78. build:
  79. context: .
  80. dockerfile: cmd/gorse-server/Dockerfile
  81. restart: unless-stopped
  82. ports:
  83. - 8087:8087
  84. command: >
  85. --master-host master --master-port 8086
  86. --http-host 0.0.0.0 --http-port 8087
  87. --log-path /var/log/gorse/server.log
  88. --cache-path /var/lib/gorse/server_cache.data
  89. volumes:
  90. - gorse_log:/var/log/gorse
  91. - server_data:/var/lib/gorse
  92. depends_on:
  93. - master
  94. master:
  95. build:
  96. context: .
  97. dockerfile: cmd/gorse-master/Dockerfile
  98. restart: unless-stopped
  99. ports:
  100. - 8086:8086
  101. - 8088:8088
  102. environment:
  103. GORSE_CACHE_STORE: redis://redis:6379
  104. {% if database == 'mysql' %}
  105. GORSE_DATA_STORE: mysql://gorse:gorse_pass@tcp(mysql:3306)/gorse
  106. {% elif database == 'postgres' %}
  107. GORSE_DATA_STORE: postgres://gorse:gorse_pass@postgres/gorse?sslmode=disable
  108. {% elif database == 'mongo' %}
  109. GORSE_DATA_STORE: mongodb://root:password@mongo:27017/gorse?authSource=admin&connect=direct
  110. {% endif %}
  111. command: >
  112. -c /etc/gorse/config.toml
  113. --log-path /var/log/gorse/master.log
  114. --cache-path /var/lib/gorse
  115. volumes:
  116. - ./config/config.toml:/etc/gorse/config.toml
  117. - gorse_log:/var/log/gorse
  118. - master_data:/var/lib/gorse
  119. depends_on:
  120. redis:
  121. condition: service_healthy
  122. {% if database == 'mysql' %}
  123. mysql:
  124. condition: service_healthy
  125. {% elif database == 'postgres' %}
  126. postgres:
  127. condition: service_healthy
  128. {% elif database == 'mongo' %}
  129. mongo:
  130. condition: service_healthy
  131. {% endif %}
  132. volumes:
  133. mysql_data:
  134. worker_data:
  135. server_data:
  136. master_data:
  137. gorse_log: