github.com/angryronald/go-kit@v0.0.0-20240505173814-ff2bd9c79dbf/test/docker/kafka/kafka.docker.go (about) 1 package kafka 2 3 import ( 4 "log" 5 "os" 6 "os/exec" 7 ) 8 9 func StartKafka() { 10 os.Setenv("KAFKA_BROKERS", "localhost:9092") 11 // not working 12 // using apache kafka 3.7.0 13 // startKafkaCmd := exec.Command("docker", "run", "-d", "-p", "9092:9092", "--name", "kafka", "apache/kafka:3.7.0") 14 // startKafkaCmd.Stdout = os.Stdout 15 // startKafkaCmd.Stderr = os.Stderr 16 // if err := startKafkaCmd.Run(); err != nil { 17 // StopKafka() 18 // log.Fatalf("Error starting Kafka: %v", err) 19 // StopKafka() 20 // os.Exit(1) 21 // } 22 23 // os.Setenv("KAFKA_BROKERS", "localhost:9092,localhost:9094,localhost:9095") 24 25 // Start Zookeeper 26 startZookeeperCmd := exec.Command("docker", "run", "-d", "--rm", "-e", "ZOOKEEPER_CLIENT_PORT=2181", "-p", "2181:2181", "--name", "zookeeper", "confluentinc/cp-zookeeper:latest") 27 startZookeeperCmd.Stdout = os.Stdout 28 startZookeeperCmd.Stderr = os.Stderr 29 if err := startZookeeperCmd.Run(); err != nil { 30 StopKafka() 31 log.Fatalf("Error starting Zookeeper: %v", err) 32 os.Exit(1) 33 } 34 35 // Start Kafka 36 startKafkaCmd := exec.Command("docker", "run", "-d", "--rm", "-p", "9092:9092", "--name", "kafka", "--link", "zookeeper", "-e", "KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092", "-e", "KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092", "-e", "KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181", "-e", "KAFKA_AUTO_CREATE_TOPICS_ENABLE=false", "-e", "KAFKA_DELETE_TOPIC_ENABLE=true", "confluentinc/cp-kafka:latest") 37 startKafkaCmd.Stdout = os.Stdout 38 startKafkaCmd.Stderr = os.Stderr 39 if err := startKafkaCmd.Run(); err != nil { 40 StopKafka() 41 log.Fatalf("Error starting Kafka: %v", err) 42 StopKafka() 43 os.Exit(1) 44 } 45 46 // Define the command to start Kafka brokers. 47 // startKafkaCmd := exec.Command("docker", "run", "-d", 48 // "-p", "9092:9092", 49 // "--name", "kafka1", 50 // "--link", "zookeeper", 51 // "-e", "KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092", 52 // "-e", "KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092", 53 // "-e", "KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181", 54 // "-e", "KAFKA_AUTO_CREATE_TOPICS_ENABLE=true", 55 // "-e", "KAFKA_DELETE_TOPIC_ENABLE=true", 56 // "confluentinc/cp-kafka:latest", 57 // ) 58 // startKafkaCmd.Stdout = os.Stdout 59 // startKafkaCmd.Stderr = os.Stderr 60 61 // // Start the first Kafka broker. 62 // if err := startKafkaCmd.Run(); err != nil { 63 // log.Fatalf("Error starting Kafka broker 1: %v", err) 64 // } 65 66 // // Start additional Kafka brokers (modify as needed). 67 // for i := 2; i <= 3; i++ { 68 // // Incremental changes to avoid conflicts between Kafka brokers. 69 // port := 9092 + i 70 // containerName := "kafka" + strconv.Itoa(i) 71 72 // // Define the command for each additional Kafka broker. 73 // startKafkaCmd := exec.Command("docker", "run", "-d", 74 // "-p", fmt.Sprintf("%d:9092", port), 75 // "--name", containerName, 76 // "--link", "zookeeper", 77 // "-e", "KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092", 78 // "-e", "KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092", 79 // "-e", "KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181", 80 // "-e", "KAFKA_AUTO_CREATE_TOPICS_ENABLE=true", 81 // "-e", "KAFKA_DELETE_TOPIC_ENABLE=true", 82 // "confluentinc/cp-kafka:latest", 83 // ) 84 // startKafkaCmd.Stdout = os.Stdout 85 // startKafkaCmd.Stderr = os.Stderr 86 87 // // Start the additional Kafka broker. 88 // if err := startKafkaCmd.Run(); err != nil { 89 // log.Fatalf("Error starting Kafka broker %d: %v", i, err) 90 // } 91 // } 92 } 93 94 func StopKafka() { 95 stopKafkaCmd := exec.Command("docker", "stop", "kafka") 96 stopKafkaCmd.Stdout = os.Stdout 97 stopKafkaCmd.Stderr = os.Stderr 98 if err := stopKafkaCmd.Run(); err != nil { 99 log.Fatalf("Error stopping Kafka: %v", err) 100 // os.Exit(1) 101 } 102 103 // stopZookeeperCmd := exec.Command("docker", "stop", "zookeeper") 104 // stopZookeeperCmd.Stdout = os.Stdout 105 // stopZookeeperCmd.Stderr = os.Stderr 106 // if err := stopZookeeperCmd.Run(); err != nil { 107 // log.Fatalf("Error stopping Zookeeper: %v", err) 108 // // os.Exit(1) 109 // } 110 111 // rmKafkaCmd := exec.Command("docker", "rm", "kafka") 112 // rmKafkaCmd.Stdout = os.Stdout 113 // rmKafkaCmd.Stderr = os.Stderr 114 // if err := stopKafkaCmd.Run(); err != nil { 115 // log.Fatalf("Error removing Kafka: %v", err) 116 // // os.Exit(1) 117 // } 118 119 // rmZookeeperCmd := exec.Command("docker", "rm", "zookeeper") 120 // rmZookeeperCmd.Stdout = os.Stdout 121 // rmZookeeperCmd.Stderr = os.Stderr 122 // if err := stopZookeeperCmd.Run(); err != nil { 123 // log.Fatalf("Error removing Zookeeper: %v", err) 124 // // os.Exit(1) 125 // } 126 }