docker-compose.yaml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481
  1. networks:
  2. r2r-network:
  3. external: true
  4. attachable: true
  5. labels:
  6. - "com.docker.compose.recreate=always"
  7. #name: r2r_r2r-network
  8. volumes:
  9. hatchet_certs:
  10. name: ${VOLUME_HATCHET_CERTS:-hatchet_certs}
  11. hatchet_config:
  12. name: ${VOLUME_HATCHET_CONFIG:-hatchet_config}
  13. hatchet_api_key:
  14. name: ${VOLUME_HATCHET_API_KEY:-hatchet_api_key}
  15. postgres_data:
  16. name: ${VOLUME_POSTGRES_DATA:-postgres_data}
  17. hatchet_rabbitmq_data:
  18. name: ${VOLUME_HATCHET_RABBITMQ_DATA:-hatchet_rabbitmq_data}
  19. hatchet_rabbitmq_conf:
  20. name: ${VOLUME_HATCHET_RABBITMQ_CONF:-hatchet_rabbitmq_conf}
  21. hatchet_postgres_data:
  22. name: ${VOLUME_HATCHET_POSTGRES_DATA:-hatchet_postgres_data}
  23. services:
  24. postgres:
  25. image: pgvector/pgvector:pg16
  26. shm_size: 1gb
  27. environment:
  28. - POSTGRES_USER=${R2R_POSTGRES_USER:-postgres}
  29. - POSTGRES_PASSWORD=${R2R_POSTGRES_PASSWORD:-cocorobo-123}
  30. - POSTGRES_HOST=${R2R_POSTGRES_HOST:-postgres}
  31. - POSTGRES_PORT=${R2R_POSTGRES_PORT:-5432}
  32. - POSTGRES_MAX_CONNECTIONS=${R2R_POSTGRES_MAX_CONNECTIONS:-102400}
  33. - PGPORT=${R2R_POSTGRES_PORT:-5432}
  34. volumes:
  35. - ./postgres_data:/var/lib/postgresql/data
  36. networks:
  37. - r2r-network
  38. ports:
  39. - "${R2R_POSTGRES_PORT:-5432}:${R2R_POSTGRES_PORT:-5432}"
  40. healthcheck:
  41. test: ["CMD-SHELL", "pg_isready -U ${R2R_POSTGRES_USER:-postgres}"]
  42. interval: 10s
  43. timeout: 5s
  44. retries: 5
  45. command: >
  46. postgres
  47. -c max_connections=${R2R_POSTGRES_MAX_CONNECTIONS:-102400}
  48. deploy:
  49. replicas: 1
  50. restart_policy:
  51. condition: on-failure
  52. hatchet-postgres:
  53. image: postgres:latest
  54. environment:
  55. POSTGRES_DB: ${HATCHET_POSTGRES_DBNAME:-hatchet}
  56. POSTGRES_USER: ${HATCHET_POSTGRES_USER:-hatchet_user}
  57. POSTGRES_PASSWORD: ${HATCHET_POSTGRES_PASSWORD:-hatchet_password}
  58. volumes:
  59. - ./hatchet_postgres_data:/var/lib/postgresql/data
  60. networks:
  61. - r2r-network
  62. healthcheck:
  63. test: ["CMD-SHELL", "pg_isready -U ${HATCHET_POSTGRES_USER:-hatchet_user} -d ${HATCHET_POSTGRES_DBNAME:-hatchet}"]
  64. interval: 10s
  65. timeout: 5s
  66. retries: 5
  67. deploy:
  68. replicas: 1
  69. restart_policy:
  70. condition: on-failure
  71. hatchet-rabbitmq:
  72. image: "rabbitmq:3-management"
  73. hostname: "hatchet-rabbitmq"
  74. ports:
  75. - "${R2R_RABBITMQ_PORT:-5673}:5672"
  76. - "${R2R_RABBITMQ_MGMT_PORT:-15673}:15672"
  77. environment:
  78. RABBITMQ_DEFAULT_USER: "user"
  79. RABBITMQ_DEFAULT_PASS: "password"
  80. volumes:
  81. - hatchet_rabbitmq_data:/var/lib/rabbitmq
  82. - hatchet_rabbitmq_conf:/etc/rabbitmq/rabbitmq.conf
  83. healthcheck:
  84. test: ["CMD", "rabbitmqctl", "status"]
  85. interval: 10s
  86. timeout: 10s
  87. retries: 5
  88. networks:
  89. - r2r-network
  90. deploy:
  91. replicas: 1
  92. restart_policy:
  93. condition: on-failure
  94. hatchet-create-db:
  95. image: postgres:latest
  96. command: >
  97. sh -c "
  98. set -e
  99. echo 'Waiting for PostgreSQL to be ready...'
  100. while ! pg_isready -h hatchet-postgres -p 5432 -U ${HATCHET_POSTGRES_USER:-hatchet_user}; do
  101. sleep 1
  102. done
  103. echo 'PostgreSQL is ready, checking if database exists...'
  104. if ! PGPASSWORD=${HATCHET_POSTGRES_PASSWORD:-hatchet_password} psql -h hatchet-postgres -p 5432 -U ${HATCHET_POSTGRES_USER:-hatchet_user} -lqt | grep -qw ${HATCHET_POSTGRES_DBNAME:-hatchet}; then
  105. echo 'Database does not exist, creating it...'
  106. PGPASSWORD=${HATCHET_POSTGRES_PASSWORD:-hatchet_password} createdb -h hatchet-postgres -p 5432 -U ${HATCHET_POSTGRES_USER:-hatchet_user} -w ${HATCHET_POSTGRES_DBNAME:-hatchet}
  107. else
  108. echo 'Database already exists, skipping creation.'
  109. fi
  110. "
  111. environment:
  112. DATABASE_URL: "postgres://${HATCHET_POSTGRES_USER:-hatchet_user}:${HATCHET_POSTGRES_PASSWORD:-hatchet_password}@hatchet-postgres:5432/${HATCHET_POSTGRES_DBNAME:-hatchet}?sslmode=disable"
  113. networks:
  114. - r2r-network
  115. deploy:
  116. replicas: 1
  117. restart_policy:
  118. condition: on-failure
  119. hatchet-migration:
  120. image: ghcr.io/hatchet-dev/hatchet/hatchet-migrate:v0.53.15
  121. environment:
  122. DATABASE_URL: "postgres://${HATCHET_POSTGRES_USER:-hatchet_user}:${HATCHET_POSTGRES_PASSWORD:-hatchet_password}@hatchet-postgres:5432/${HATCHET_POSTGRES_DBNAME:-hatchet}?sslmode=disable"
  123. depends_on:
  124. - hatchet-create-db
  125. deploy:
  126. replicas: 1
  127. restart_policy:
  128. condition: on-failure
  129. networks:
  130. - r2r-network
  131. hatchet-setup-config:
  132. image: ghcr.io/hatchet-dev/hatchet/hatchet-admin:v0.53.15
  133. command: /hatchet/hatchet-admin quickstart --skip certs --generated-config-dir /hatchet/config --overwrite=false
  134. environment:
  135. DATABASE_URL: "postgres://${HATCHET_POSTGRES_USER:-hatchet_user}:${HATCHET_POSTGRES_PASSWORD:-hatchet_password}@hatchet-postgres:5432/${HATCHET_POSTGRES_DBNAME:-hatchet}?sslmode=disable"
  136. HATCHET_CLIENT_GRPC_MAX_RECV_MESSAGE_LENGTH: "${HATCHET_CLIENT_GRPC_MAX_RECV_MESSAGE_LENGTH:-134217728}"
  137. HATCHET_CLIENT_GRPC_MAX_SEND_MESSAGE_LENGTH: "${HATCHET_CLIENT_GRPC_MAX_SEND_MESSAGE_LENGTH:-134217728}"
  138. DATABASE_POSTGRES_PORT: "5432"
  139. DATABASE_POSTGRES_HOST: hatchet-postgres
  140. DATABASE_POSTGRES_USERNAME: "${HATCHET_POSTGRES_USER:-hatchet_user}"
  141. DATABASE_POSTGRES_PASSWORD: "${HATCHET_POSTGRES_PASSWORD:-hatchet_password}"
  142. HATCHET_DATABASE_POSTGRES_DB_NAME: "${HATCHET_POSTGRES_DBNAME:-hatchet}"
  143. SERVER_TASKQUEUE_RABBITMQ_URL: amqp://user:password@hatchet-rabbitmq:5672/
  144. SERVER_AUTH_COOKIE_DOMAIN: "http://host.docker.internal:${R2R_HATCHET_DASHBOARD_PORT:-7274}"
  145. SERVER_URL: "http://host.docker.internal:${R2R_HATCHET_DASHBOARD_PORT:-7274}"
  146. SERVER_AUTH_COOKIE_INSECURE: "t"
  147. SERVER_GRPC_BIND_ADDRESS: "0.0.0.0"
  148. SERVER_GRPC_INSECURE: "t"
  149. SERVER_GRPC_BROADCAST_ADDRESS: "hatchet-engine:7077"
  150. SERVER_GRPC_MAX_MSG_SIZE: 134217728
  151. volumes:
  152. - hatchet_certs:/hatchet/certs
  153. - hatchet_config:/hatchet/config
  154. depends_on:
  155. - hatchet-migration
  156. - hatchet-rabbitmq
  157. networks:
  158. - r2r-network
  159. deploy:
  160. replicas: 1
  161. restart_policy:
  162. condition: on-failure
  163. hatchet-engine:
  164. image: ghcr.io/hatchet-dev/hatchet/hatchet-engine:v0.53.15
  165. command: /hatchet/hatchet-engine --config /hatchet/config
  166. depends_on:
  167. - hatchet-setup-config
  168. ports:
  169. - "${R2R_HATCHET_ENGINE_PORT:-7077}:7077"
  170. environment:
  171. DATABASE_URL: "postgres://${HATCHET_POSTGRES_USER:-hatchet_user}:${HATCHET_POSTGRES_PASSWORD:-hatchet_password}@hatchet-postgres:5432/${HATCHET_POSTGRES_DBNAME:-hatchet}?sslmode=disable"
  172. SERVER_GRPC_BROADCAST_ADDRESS: "hatchet-engine:7077"
  173. SERVER_GRPC_BIND_ADDRESS: "0.0.0.0"
  174. SERVER_GRPC_PORT: "7077"
  175. SERVER_GRPC_INSECURE: "t"
  176. SERVER_GRPC_MAX_MSG_SIZE: 134217728
  177. volumes:
  178. - hatchet_certs:/hatchet/certs
  179. - hatchet_config:/hatchet/config
  180. healthcheck:
  181. test: ["CMD", "wget", "-q", "-O", "-", "http://localhost:8733/live"]
  182. interval: 10s
  183. timeout: 5s
  184. retries: 5
  185. deploy:
  186. replicas: 1
  187. restart_policy:
  188. condition: on-failure
  189. networks:
  190. - r2r-network
  191. hatchet-dashboard:
  192. image: ghcr.io/hatchet-dev/hatchet/hatchet-dashboard:v0.53.15
  193. command: sh ./entrypoint.sh --config /hatchet/config
  194. depends_on:
  195. - hatchet-setup-config
  196. environment:
  197. DATABASE_URL: "postgres://${HATCHET_POSTGRES_USER:-hatchet_user}:${HATCHET_POSTGRES_PASSWORD:-hatchet_password}@hatchet-postgres:5432/${HATCHET_POSTGRES_DBNAME:-hatchet}?sslmode=disable"
  198. volumes:
  199. - hatchet_certs:/hatchet/certs
  200. - hatchet_config:/hatchet/config
  201. networks:
  202. - r2r-network
  203. ports:
  204. - "${R2R_HATCHET_DASHBOARD_PORT:-7274}:80"
  205. deploy:
  206. replicas: 1
  207. restart_policy:
  208. condition: on-failure
  209. setup-token:
  210. image: ghcr.io/hatchet-dev/hatchet/hatchet-admin:v0.53.15
  211. command: sh /scripts/setup-token.sh
  212. volumes:
  213. - ./scripts:/scripts
  214. - hatchet_certs:/hatchet/certs
  215. - hatchet_config:/hatchet/config
  216. - hatchet_api_key:/hatchet_api_key
  217. depends_on:
  218. - hatchet-setup-config
  219. deploy:
  220. replicas: 1
  221. restart_policy:
  222. condition: on-failure
  223. networks:
  224. - r2r-network
  225. unstructured:
  226. image: ${UNSTRUCTURED_IMAGE:-ragtoriches/unst-prod}
  227. healthcheck:
  228. test: ["CMD", "curl", "-f", "http://localhost:7275/health"]
  229. interval: 10s
  230. timeout: 5s
  231. retries: 5
  232. deploy:
  233. replicas: 1
  234. restart_policy:
  235. condition: on-failure
  236. networks:
  237. - r2r-network
  238. graph_clustering:
  239. image: ${GRAPH_CLUSTERING_IMAGE:-ragtoriches/cluster-prod}
  240. ports:
  241. - "${R2R_GRAPH_CLUSTERING_PORT:-7276}:7276"
  242. networks:
  243. - r2r-network
  244. healthcheck:
  245. test: ["CMD", "curl", "-f", "http://localhost:7276/health"]
  246. interval: 10s
  247. timeout: 5s
  248. retries: 5
  249. deploy:
  250. replicas: 1
  251. restart_policy:
  252. condition: on-failure
  253. r2r:
  254. image: sciphiai/r2r:latest
  255. ports:
  256. - "${R2R_PORT:-7272}:${R2R_PORT:-7272}"
  257. environment:
  258. - PYTHONUNBUFFERED=1
  259. - R2R_PORT=${R2R_PORT:-7272}
  260. - R2R_HOST=${R2R_HOST:-0.0.0.0}
  261. # R2R
  262. - R2R_LOG_LEVEL=${R2R_LOG_LEVEL:-INFO}
  263. - R2R_LOG_CONSOLE_FORMATTER=${R2R_LOG_CONSOLE_FORMATTER:-json}
  264. - R2R_CONFIG_NAME=${R2R_CONFIG_NAME:-}
  265. - R2R_CONFIG_PATH=${R2R_CONFIG_PATH:-}
  266. - R2R_PROJECT_NAME=${R2R_PROJECT_NAME:-r2r_default}
  267. - R2R_SECRET_KEY=${R2R_SECRET_KEY:-}
  268. # Postgres
  269. - R2R_POSTGRES_USER=${R2R_POSTGRES_USER:-postgres}
  270. - R2R_POSTGRES_PASSWORD=${R2R_POSTGRES_PASSWORD:-cocorobo-123}
  271. - R2R_POSTGRES_HOST=${R2R_POSTGRES_HOST:-postgres}
  272. - R2R_POSTGRES_PORT=${R2R_POSTGRES_PORT:-5432}
  273. - R2R_POSTGRES_DBNAME=${R2R_POSTGRES_DBNAME:-postgres}
  274. - R2R_POSTGRES_MAX_CONNECTIONS=${R2R_POSTGRES_MAX_CONNECTIONS:-102400}
  275. - R2R_POSTGRES_STATEMENT_CACHE_SIZE=${R2R_POSTGRES_STATEMENT_CACHE_SIZE:-1000}
  276. # OpenAI
  277. #- OPENAI_API_KEY=${OPENAI_API_KEY:-}
  278. #- OPENAI_API_BASE=${OPENAI_API_BASE:-}
  279. - OPENAI_API_KEY=${OPENAI_API_KEY:-sk-j9Uwupu0NPZtdDS_IfEZlRWpX1JgFyZFLZProkesy2QbtqMs16pDnylAozU}
  280. - OPENAI_API_BASE=${OPENAI_API_BASE:-http://172.16.12.13:3000/v1}
  281. # Azure Foundry
  282. - AZURE_FOUNDRY_API_ENDPOINT=${AZURE_FOUNDRY_API_ENDPOINT:-}
  283. - AZURE_FOUNDRY_API_KEY=${AZURE_FOUNDRY_API_KEY:-}
  284. # XAI / GROK
  285. - XAI_API_KEY=${XAI_API_KEY:-}
  286. # Anthropic
  287. - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
  288. # Azure
  289. - AZURE_API_KEY=${AZURE_API_KEY:-}
  290. - AZURE_API_BASE=${AZURE_API_BASE:-}
  291. - AZURE_API_VERSION=${AZURE_API_VERSION:-}
  292. # Google Vertex AI
  293. - GOOGLE_APPLICATION_CREDENTIALS=${GOOGLE_APPLICATION_CREDENTIALS:-}
  294. - VERTEX_PROJECT=${VERTEX_PROJECT:-}
  295. - VERTEX_LOCATION=${VERTEX_LOCATION:-}
  296. # Google Gemini
  297. - GEMINI_API_KEY=${GEMINI_API_KEY:-}
  298. # AWS Bedrock
  299. #- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-}
  300. #- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-}
  301. #- AWS_REGION_NAME=${AWS_REGION_NAME:-}
  302. - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-AKIATLPEDU37ZUJYM7GG}
  303. - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-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}
  304. - AWS_REGION_NAME=${AWS_REGION_NAME:-cn-north-1}
  305. # Groq
  306. - GROQ_API_KEY=${GROQ_API_KEY:-}
  307. # Cohere
  308. - COHERE_API_KEY=${COHERE_API_KEY:-}
  309. # Anyscale
  310. - ANYSCALE_API_KEY=${ANYSCALE_API_KEY:-}
  311. # Ollama
  312. #- OLLAMA_API_BASE=${OLLAMA_API_BASE:-http://host.docker.internal:11434}
  313. - OLLAMA_API_BASE=${OLLAMA_API_BASE:-http://34.228.204.21:11434}
  314. # LM Studio
  315. - LM_STUDIO_API_BASE=${LM_STUDIO_API_BASE:-}
  316. - LM_STUDIO_API_KEY=${LM_STUDIO_API_KEY:-1234}
  317. # Huggingface
  318. - HUGGINGFACE_API_BASE=${HUGGINGFACE_API_BASE:-}
  319. - HUGGINGFACE_API_KEY=${HUGGINGFACE_API_KEY}
  320. # Unstructured
  321. - UNSTRUCTURED_API_KEY=${UNSTRUCTURED_API_KEY:-cJR72sMAYxCtT6Pmd2PW3KmrjNcKp5}
  322. - UNSTRUCTURED_API_URL=${UNSTRUCTURED_API_URL:-https://api.unstructured.io/general/v0/general}
  323. - UNSTRUCTURED_SERVICE_URL=${UNSTRUCTURED_SERVICE_URL:-http://unstructured:7275}
  324. - UNSTRUCTURED_NUM_WORKERS=${UNSTRUCTURED_NUM_WORKERS:-10}
  325. # Hatchet
  326. - HATCHET_CLIENT_TLS_STRATEGY=none
  327. - HATCHET_CLIENT_GRPC_MAX_RECV_MESSAGE_LENGTH=${HATCHET_CLIENT_GRPC_MAX_RECV_MESSAGE_LENGTH:-134217728}
  328. - HATCHET_CLIENT_GRPC_MAX_SEND_MESSAGE_LENGTH=${HATCHET_CLIENT_GRPC_MAX_SEND_MESSAGE_LENGTH:-134217728}
  329. # Graphologic
  330. - CLUSTERING_SERVICE_URL=http://graph_clustering:7276
  331. # OAuth Credentials
  332. - GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
  333. - GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET}
  334. - GOOGLE_REDIRECT_URI=${GOOGLE_REDIRECT_URI}
  335. - GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID}
  336. - GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET}
  337. - GITHUB_REDIRECT_URI=${GITHUB_REDIRECT_URI}
  338. # Other
  339. - FIRECRAWL_API_KEY=${FIRECRAWL_API_KEY}
  340. - SERPER_API_KEY=${SERPER_API_KEY}
  341. - SENDGRID_API_KEY=${SENDGRID_API_KEY}
  342. - R2R_SENTRY_DSN=${R2R_SENTRY_DSN}
  343. - R2R_SENTRY_ENVIRONMENT=${R2R_SENTRY_ENVIRONMENT}
  344. - R2R_SENTRY_TRACES_SAMPLE_RATE=${R2R_SENTRY_TRACES_SAMPLE_RATE}
  345. - R2R_SENTRY_PROFILES_SAMPLE_RATE=${R2R_SENTRY_PROFILES_SAMPLE_RATE}
  346. command: >
  347. sh -c '
  348. if [ -z "$${HATCHET_CLIENT_TOKEN}" ]; then
  349. export HATCHET_CLIENT_TOKEN=$$(cat /hatchet_api_key/api_key.txt)
  350. fi
  351. exec uvicorn core.main.app_entry:app --host $${R2R_HOST} --port $${R2R_PORT}
  352. '
  353. env_file:
  354. - ./env/r2r-full.env
  355. networks:
  356. - r2r-network
  357. volumes:
  358. - ./user_configs:/app/user_configs
  359. - ./scripts:/scripts
  360. #- ${R2R_CONFIG_PATH:-/}:${R2R_CONFIG_PATH:-/app/config}
  361. - hatchet_api_key:/hatchet_api_key:ro
  362. extra_hosts:
  363. - host.docker.internal:host-gateway
  364. depends_on:
  365. - setup-token
  366. - unstructured
  367. - graph_clustering
  368. healthcheck:
  369. test: ["CMD", "curl", "-f", "http://localhost:${R2R_PORT:-7272}/v3/health"]
  370. interval: 6s
  371. timeout: 5s
  372. retries: 5
  373. start_period: 30s
  374. build:
  375. context: ../py/
  376. dockerfile: ../py/Dockerfile
  377. deploy:
  378. replicas: ${R2R_REPLICAS:-1}
  379. restart_policy:
  380. condition: on-failure
  381. update_config:
  382. parallelism: 1
  383. delay: 30s
  384. order: start-first
  385. rollback_config:
  386. parallelism: 1
  387. delay: 30s
  388. #logging:
  389. #driver: fluentd
  390. #options:
  391. #fluentd-address: host.docker.internal:24224
  392. #fluentd-sub-second-precision: "true"
  393. #tag: backend
  394. r2r-dashboard:
  395. image: sciphiai/r2r-dashboard:1.0.2
  396. environment:
  397. - NEXT_PUBLIC_R2R_DEPLOYMENT_URL=${R2R_DEPLOYMENT_URL:-http://localhost:7272}
  398. - NEXT_PUBLIC_HATCHET_DASHBOARD_URL=${HATCHET_DASHBOARD_URL:-http://localhost:${R2R_HATCHET_DASHBOARD_PORT:-7274}}
  399. ports:
  400. - "${R2R_DASHBOARD_PORT:-7273}:3000"
  401. deploy:
  402. replicas: 1
  403. restart_policy:
  404. condition: on-failure
  405. networks:
  406. - r2r-network
  407. fluent-bit:
  408. image: fluent/fluent-bit:latest
  409. volumes:
  410. - ./docker/fluent-bit:/fluent-bit/etc:ro
  411. ports:
  412. - "24224:24224"
  413. depends_on:
  414. - victoria-logs
  415. networks:
  416. - r2r-network
  417. grafana:
  418. image: grafana/grafana:latest
  419. ports:
  420. - "3001:3000"
  421. env_file:
  422. - .env
  423. volumes:
  424. - ./.data/grafana:/var/lib/grafana
  425. networks:
  426. - r2r-network
  427. victoria-logs:
  428. image: victoriametrics/victoria-logs:v1.10.1-victorialogs
  429. ports:
  430. - "9428:9428"
  431. volumes:
  432. - ./.data/victoria-logs:/data
  433. command: -storageDataPath=/data -retentionPeriod=60d
  434. networks:
  435. - r2r-network