Docker Compose部署Presto连接Kafka提示kafka catalog不存在
故障原因
- 核心问题是
ahanaio/prestodb-sandbox镜像的Presto配置根目录为/opt/presto/etc,catalog配置文件的默认加载路径是/opt/presto/etc/catalog,而非你配置里写的/etc/catalog。配置文件挂载到错误路径后,Presto启动时完全扫描不到Kafka连接器的配置,自然无法识别到kafka这个catalog。 - 常见触发场景:如果启动容器前本地不存在
./presto/kafka.properties文件,Docker会默认把这个挂载点创建成目录而非普通文件,就算后续修正了挂载路径,也会因为配置文件是目录导致加载失败。
修复步骤
- 停掉当前运行的容器栈,清理残留资源:
docker-compose down - 修改docker-compose.yaml中presto服务的挂载路径,对齐镜像内的实际catalog目录:
presto: image: ahanaio/prestodb-sandbox:latest ports: - 8087:8080 volumes: # 修正挂载路径为镜像实际的catalog加载目录 - ./presto/kafka.properties:/opt/presto/etc/catalog/kafka.properties networks: - shared - 提前在本地创建好配置目录和文件,避免Docker误生成目录:
# 创建配置目录 mkdir -p ./presto # 写入正确的Kafka连接器配置 cat > ./presto/kafka.properties <<EOF connector.name=kafka kafka.nodes=kafka1:19092 kafka.table-names=example_topic EOF - 重新启动整个服务栈:
docker-compose up -d - 等待30~60秒让Presto完成初始化,再通过CLI连接验证即可。如果依然报相同错误,可以进容器校验配置是否正确挂载:
# 替换为实际的presto容器名称,可通过docker ps查看 docker exec -it <presto容器名> bash # 检查配置文件是否存在、内容是否正确 cat /opt/presto/etc/catalog/kafka.properties
内容的提问来源于stack exchange,提问作者Sjoerd222888
相关产品推荐
相关产品推荐

