jabajke

Untitled

Mar 17th, 2023
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.54 KB | None | 0 0
  1. version: "3.8"
  2.  
  3. networks:
  4. app-tier:
  5. driver: bridge
  6.  
  7. services:
  8. web:
  9. build: .
  10. container_name: "web"
  11. command: python main.py
  12. volumes:
  13. - .:/app
  14. ports:
  15. - "8000:8000"
  16. env_file:
  17. - .env
  18. restart: always
  19. environment:
  20. - KAFKA_BOOTSTRAP_SERVERS=kafka:9202
  21. networks:
  22. - app-tier
  23.  
  24. mongo:
  25. image: mongo:latest
  26. container_name: mongo
  27. command: mongod --noauth
  28. env_file:
  29. - .env
  30. volumes:
  31. - mongo:/data/db
  32. ports:
  33. - "6000:27017"
  34. restart: always
  35. networks:
  36. - app-tier
  37.  
  38. zookeeper:
  39. image: 'bitnami/zookeeper:latest'
  40. ports:
  41. - '2181:2181'
  42. environment:
  43. - ALLOW_ANONYMOUS_LOGIN=yes
  44. networks:
  45. - app-tier
  46.  
  47. kafka:
  48. image: 'bitnami/kafka:latest'
  49. ports:
  50. - '9092:9092'
  51. environment:
  52. - KAFKA_BROKER_ID=1
  53. - AUTO_CREATE_TOPICS=true
  54. - KAFKA_ADVERTISED_HOST_NAME=kafka
  55. - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
  56. - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092
  57. - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
  58. - ALLOW_PLAINTEXT_LISTENER=yes
  59. depends_on:
  60. - zookeeper
  61. networks:
  62. - app-tier
  63.  
  64. kafka-ui:
  65. image: provectuslabs/kafka-ui
  66. container_name: kafka-ui
  67. ports:
  68. - '8081:8080'
  69. environment:
  70. KAFKA_CLUSTERS_0_NAME: "local"
  71. KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092
  72. KAFKA_CLUSTERS_0_ZOOKEEPER: zookeeper:2181
  73. KAFKA_CLUSTERS_0_READONLY: "yes"
  74. depends_on:
  75. - kafka
  76. - zookeeper
  77. networks:
  78. - app-tier
  79.  
  80.  
  81. volumes:
  82. mongo:
  83.  
  84.  
  85. # .env
  86. HOST=0.0.0.0
  87. PORT=8000
  88. RELOAD=1
  89. MONGO_INITDB_DATABASE=mongowhite
  90. DATABASE_URL=mongodb://mongo
  91. CLIENT_ID=inraddgleubfds4ohodjyk8y11wevm
  92. CLIENT_SECRET_KEY=h2nr4gntb4tey3wcymsdpri52hg9wl
  93. KAFKA_BOOTSTRAP_SERVERS=kafka:9202
  94.  
  95.  
  96. # app.py
  97. @app.on_event("startup")
  98. async def create_topic_if_not_exists(kafka_cfg=settings.kafka_settings):
  99. bootstrap_servers = kafka_cfg.KAFKA_BOOTSTRAP_SERVERS
  100. client = KafkaClient(bootstrap_servers=bootstrap_servers)
  101. admin_client = KafkaAdminClient(bootstrap_servers=bootstrap_servers)
  102.  
  103. future = client.cluster.request_update()
  104. client.poll(future=future)
  105. metadata = client.cluster
  106.  
  107. if kafka_cfg.KAFKA_TOPIC not in metadata.topics():
  108. print('Topic creation..')
  109. topic = NewTopic(name=kafka_cfg.KAFKA_TOPIC, num_partitions=2, replication_factor=1)
  110. admin_client.create_topics(new_topics=[topic], validate_only=False)
  111.  
  112.  
Advertisement
Add Comment
Please, Sign In to add comment