Ubuntu Server修改Docker部署Kafka环境变量报错求助
解决Docker Kafka设置广告IP时的环境变量错误
错误原因分析
你遇到的“not a valid identifier”错误有两个核心原因:
- bash环境变量命名规则限制:bash不允许环境变量名包含连字符
-,只能用字母、数字和下划线,且首字符必须是字母或下划线。你用的KAFKA_ADVERSITED_HOST-kafka里的-违反了这个规则。 - 命令格式错误:
export命令里,变量名和等号之间、等号和值之间都不能有空格,正确格式是export 变量名=值。
另外注意:你拼写错了Kafka的环境变量名,正确的应该是ADVERTISED(不是ADVERSITED)。
正确设置Docker Kafka广告IP的方法
Docker中运行Kafka时,不需要在主机shell里export环境变量,而是直接在启动容器时通过参数传递:
方法1:用docker run命令启动
docker run -d \ --name kafka \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.56:9092 \ -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \ -p 9092:9092 \ wurstmeister/kafka
方法2:用docker-compose启动
创建docker-compose.yml文件:
version: '3' services: kafka: image: wurstmeister/kafka ports: - "9092:9092" environment: KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.1.56:9092 KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
然后执行启动命令:
docker-compose up -d
补充说明
Kafka的ADVERTISED_LISTENERS是用来对外公布的监听地址,必须设置为容器所在主机的IP,这样外部客户端才能连接。而LISTENERS设置为0.0.0.0是让Kafka监听容器内所有网卡,保证端口映射生效。
内容的提问来源于stack exchange,提问作者Nesan Mano
相关产品推荐
相关产品推荐

