Protocol buffer link: https://protobuf.dev/
Official appache kafka hithub link: https://github.com/apache/kafka/blob/...
kafka yml file link: https://github.com/apache/kafka/blob/...
kafka ui yml: https://github.com/provectus/kafka-ui
aiokafka link: https://github.com/aio-libs/aiokafka
lifespan link: https://fastapi.tiangolo.com/advanced...
---------------------------------- compose.yml---------------------------------------------
services:
broker:
image: apache/kafka:latest
hostname: broker
container_name: broker
ports:
'9092:9092'
environment:
KAFKA_NODE_ID: 1
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT_HOST://localhost:9092,PLAINTEXT://broker:19092'
KAFKA_PROCESS_ROLES: 'broker,controller'
KAFKA_CONTROLLER_QUORUM_VOTERS: '1@broker:29093'
KAFKA_LISTENERS: 'CONTROLLER://:29093,PLAINTEXT_HOST://:9092,PLAINTEXT://:19092'
KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
CLUSTER_ID: '4L6g3nShT-eMCtK--X86sw'
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
8080:8080
environment:
DYNAMIC_CONFIG_ENABLED: 'true'
postgres_db:
image: postgres
restart: always
ports:
"5432:5432"
volumes:
postgres_db:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD=abc
POSTGRES_HOST_AUTH_METHOD=trust
api:
build: ./ms_01
container_name: ms_01
ports:
"8000:8000"
depends_on:
postgres_db
volumes:
postgres_db:
driver: local
networks:
default:
driver: bridge
---------------------------------- Dockerfile ---------------------------------------------
FROM python:3.12
RUN pip install poetry
WORKDIR /work
RUN apt-get update && apt-get install -y protobuf-compiler
COPY . /work/
RUN poetry config virtualenvs.create false
RUN poetry install
EXPOSE 8000
CMD [ "poetry", "run", "uvicorn", "fastapi_docker.main:app", "--host", "0.0.0.0", "--reload" ]