From 191c598c15b6b3b8a5ad927fc170019469ec1079 Mon Sep 17 00:00:00 2001 From: Kumaran Rajendhiran Date: Fri, 15 Sep 2023 15:34:17 +0530 Subject: [PATCH 1/2] Add Dockerfile, docker compose and scripts to locally run and test faststream app --- Dockerfile | 11 +++++++++ docker_compose.yml | 40 +++++++++++++++++++++++++++++++++ scripts/build_docker.sh | 3 +++ scripts/produce.sh | 7 ++++++ scripts/start_docker_compose.sh | 3 +++ scripts/stop_docker_compose.sh | 3 +++ scripts/subscribe.sh | 3 +++ 7 files changed, 70 insertions(+) create mode 100644 Dockerfile create mode 100644 docker_compose.yml create mode 100755 scripts/build_docker.sh create mode 100755 scripts/produce.sh create mode 100755 scripts/start_docker_compose.sh create mode 100755 scripts/stop_docker_compose.sh create mode 100755 scripts/subscribe.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b059a85 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM python:3.9-slim-bullseye + +SHELL ["/bin/bash", "-c"] +WORKDIR /project + +ADD app /project/app +COPY requirements.txt /project/ + +RUN pip install --no-cache-dir -r /project/requirements.txt + +CMD ["faststream", "run", "--workers", "1", "app.application:app"] diff --git a/docker_compose.yml b/docker_compose.yml new file mode 100644 index 0000000..711cc51 --- /dev/null +++ b/docker_compose.yml @@ -0,0 +1,40 @@ +version: "3" + +networks: + faststream-app-tier: + name: faststream-app-tier + +services: + kafka: + image: bitnami/kafka:3.5.0 + # conatiner_name: bitnami-kafka + networks: + - faststream-app-tier + ports: + - "9092:9092" + environment: + - KAFKA_CFG_NODE_ID=0 + - KAFKA_CFG_PROCESS_ROLES=controller,broker + - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 + - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT + - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093 + - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER + - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true + - ALLOW_PLAINTEXT_LISTENER=true + healthcheck: + # test: ["CMD-SHELL", "kafka-topics.sh --bootstrap-server kafka:9092 --topic hc --create --if-not-exists && kafka-topics.sh --bootstrap-server kafka:9092 --topic hc --describe"] + test: ["CMD-SHELL", "kafka-topics.sh --bootstrap-server kafka:9092 --list"] + start_period: 10s + interval: 5s + timeout: 10s + retries: 5 + + faststream-app: + # build: . + depends_on: + kafka: + condition: service_healthy + image: faststream-app:latest + # container_name: faststream-app + networks: + - faststream-app-tier diff --git a/scripts/build_docker.sh b/scripts/build_docker.sh new file mode 100755 index 0000000..921b9c5 --- /dev/null +++ b/scripts/build_docker.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker build -t faststream-app:latest . diff --git a/scripts/produce.sh b/scripts/produce.sh new file mode 100755 index 0000000..7847390 --- /dev/null +++ b/scripts/produce.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +docker exec -it faststream-gen-template-kafka-1 /bin/bash -c 'echo \{\"a\":3,\"b\":5\} | /opt/bitnami/kafka/bin/kafka-console-producer.sh --broker-list kafka:9092 --topic multiply' + +docker exec -it faststream-gen-template-kafka-1 /bin/bash -c 'echo \{\"a\":4,\"b\":6\} | /opt/bitnami/kafka/bin/kafka-console-producer.sh --broker-list kafka:9092 --topic multiply' + +docker exec -it faststream-gen-template-kafka-1 /bin/bash -c 'echo \{\"a\":5,\"b\":7\} | /opt/bitnami/kafka/bin/kafka-console-producer.sh --broker-list kafka:9092 --topic multiply' diff --git a/scripts/start_docker_compose.sh b/scripts/start_docker_compose.sh new file mode 100755 index 0000000..9bf708b --- /dev/null +++ b/scripts/start_docker_compose.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker-compose -f docker_compose.yml up -d --no-recreate diff --git a/scripts/stop_docker_compose.sh b/scripts/stop_docker_compose.sh new file mode 100755 index 0000000..8db7597 --- /dev/null +++ b/scripts/stop_docker_compose.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker-compose -f docker_compose.yml down diff --git a/scripts/subscribe.sh b/scripts/subscribe.sh new file mode 100755 index 0000000..48fa62f --- /dev/null +++ b/scripts/subscribe.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker exec -it faststream-gen-template-kafka-1 /opt/bitnami/kafka/bin/kafka-console-consumer.sh --consumer.config /opt/bitnami/kafka/config/consumer.properties --bootstrap-server kafka:9092 --topic results --from-beginning From 50ed0593a2a9b11d89bf2ce4e884a17ae4d4700c Mon Sep 17 00:00:00 2001 From: Kumaran Rajendhiran Date: Fri, 15 Sep 2023 15:40:32 +0530 Subject: [PATCH 2/2] Use container_name --- docker_compose.yml | 5 ++--- scripts/produce.sh | 6 +++--- scripts/subscribe.sh | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/docker_compose.yml b/docker_compose.yml index 711cc51..bfb4e2d 100644 --- a/docker_compose.yml +++ b/docker_compose.yml @@ -7,7 +7,7 @@ networks: services: kafka: image: bitnami/kafka:3.5.0 - # conatiner_name: bitnami-kafka + container_name: bitnami_kafka networks: - faststream-app-tier ports: @@ -22,7 +22,6 @@ services: - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true - ALLOW_PLAINTEXT_LISTENER=true healthcheck: - # test: ["CMD-SHELL", "kafka-topics.sh --bootstrap-server kafka:9092 --topic hc --create --if-not-exists && kafka-topics.sh --bootstrap-server kafka:9092 --topic hc --describe"] test: ["CMD-SHELL", "kafka-topics.sh --bootstrap-server kafka:9092 --list"] start_period: 10s interval: 5s @@ -35,6 +34,6 @@ services: kafka: condition: service_healthy image: faststream-app:latest - # container_name: faststream-app + container_name: faststream_app networks: - faststream-app-tier diff --git a/scripts/produce.sh b/scripts/produce.sh index 7847390..7b99e30 100755 --- a/scripts/produce.sh +++ b/scripts/produce.sh @@ -1,7 +1,7 @@ #!/bin/bash -docker exec -it faststream-gen-template-kafka-1 /bin/bash -c 'echo \{\"a\":3,\"b\":5\} | /opt/bitnami/kafka/bin/kafka-console-producer.sh --broker-list kafka:9092 --topic multiply' +docker exec -it bitnami_kafka /bin/bash -c 'echo \{\"a\":3,\"b\":5\} | /opt/bitnami/kafka/bin/kafka-console-producer.sh --broker-list kafka:9092 --topic multiply' -docker exec -it faststream-gen-template-kafka-1 /bin/bash -c 'echo \{\"a\":4,\"b\":6\} | /opt/bitnami/kafka/bin/kafka-console-producer.sh --broker-list kafka:9092 --topic multiply' +docker exec -it bitnami_kafka /bin/bash -c 'echo \{\"a\":4,\"b\":6\} | /opt/bitnami/kafka/bin/kafka-console-producer.sh --broker-list kafka:9092 --topic multiply' -docker exec -it faststream-gen-template-kafka-1 /bin/bash -c 'echo \{\"a\":5,\"b\":7\} | /opt/bitnami/kafka/bin/kafka-console-producer.sh --broker-list kafka:9092 --topic multiply' +docker exec -it bitnami_kafka /bin/bash -c 'echo \{\"a\":5,\"b\":7\} | /opt/bitnami/kafka/bin/kafka-console-producer.sh --broker-list kafka:9092 --topic multiply' diff --git a/scripts/subscribe.sh b/scripts/subscribe.sh index 48fa62f..57aea17 100755 --- a/scripts/subscribe.sh +++ b/scripts/subscribe.sh @@ -1,3 +1,3 @@ #!/bin/bash -docker exec -it faststream-gen-template-kafka-1 /opt/bitnami/kafka/bin/kafka-console-consumer.sh --consumer.config /opt/bitnami/kafka/config/consumer.properties --bootstrap-server kafka:9092 --topic results --from-beginning +docker exec -it bitnami_kafka /opt/bitnami/kafka/bin/kafka-console-consumer.sh --consumer.config /opt/bitnami/kafka/config/consumer.properties --bootstrap-server kafka:9092 --topic results --from-beginning