instruction: Create a Dockerfile for fundamentals
output: ```dockerfile
  from the previous section, go ahead and stop that container using the following command:
  
  $ docker rm -f kafka
  Start the Compose stack by running the following command at the root of the cloned project directory:
  
  $ docker compose up
  After a moment, the application will be up and running.In the stack is another service that can be used to publish messages. Open it by going to http://localhost:3000. As you type in a message and submit the form, you should see the log message of the message being received by the app.This helps demonstrate how a containerized approach makes it easy to add additional services to help test and troubleshoot your application.Adding cluster visualizationOnce you start using containers in your development environment, you start to realize the ease of adding additional services that are solely focused on helping development, such as visualizers and other supporting services. Since you have Kafka running, it might be helpful to visualize whatâs going on in the Kafka cluster. To do so, you can run the Kafbat UI web application.To add it to your own project (itâs already in the demo application), you only need to add the following configuration to your Compose file:
  
  services:
   kafka-ui:
   image: kafbat/kafka-ui:main
   ports:
   - 8080:8080
   environment:
   DYNAMIC_CONFIG_ENABLED: "true"
   KAFKA_CLUSTERS_0_NAME: local
   KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9093
   depends_on:
   - kafkaThen, once the Compose stack starts, you can open your browser to http://localhost:8080 and navigate around to view additional details about the cluster, check on consumers, publish test messages, and more.Testing with KafkaIf youâre interested in learning how you can integrate Kafka easily into your integration tests, check out the Testing Spring Boot Kafka Listener using Testcontainers guide. This guide will teach you how to use Testcontainers to manage the lifecycle of Kafka containers in your tests.ConclusionBy using Docker, you can simplify the process of developing and testing event-driven applications with Kafka. Containers simplify the process of setting up and deploying the various services you need to develop. And once theyâre defined in Compose, everyone on the team can benefit
  ```