You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行docker-compose up时出现'dub: command not found'错误求助

问题排查与解决方案

核心原因

你犯了一个容器环境混淆的常见错误:你自己构建的Ubuntu镜像里确实安装了dub,但docker-compose中使用的是confluentinc官方的ZooKeeper/Kafka镜像,这两个镜像属于完全独立的环境——官方镜像里根本没有安装dub,所以启动时会触发dub: command not found错误。

解决方案

方案一:基于官方镜像定制(推荐)

直接在confluent官方镜像的基础上安装dub,既能复用官方镜像的成熟配置,又能满足dub的需求:

  1. 针对ZooKeeper编写自定义Dockerfile(命名为Dockerfile.zk):
FROM confluentinc/cp-zookeeper:latest
# 切换到root用户执行安装操作
USER root
RUN apt-get update && apt-get install -y dub
# 切回官方镜像默认的普通用户,保证安全性
USER appuser
  1. 针对Kafka编写自定义Dockerfile(命名为Dockerfile.kafka):
FROM confluentinc/cp-kafka:latest
USER root
RUN apt-get update && apt-get install -y dub
USER appuser
  1. 修改docker-compose.yml,使用你自定义构建的镜像:
version: '3'
services:
  zookeeper:
    build:
      context: .
      dockerfile: Dockerfile.zk
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000

  kafka:
    build:
      context: .
      dockerfile: Dockerfile.kafka
    depends_on:
      - zookeeper
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
  1. 启动服务:
docker-compose up --build

方案二:在你的Ubuntu镜像中直接安装ZooKeeper和Kafka(不推荐)

如果你坚持要用自己的Ubuntu镜像,需要在Dockerfile中额外安装ZooKeeper和Kafka的依赖及服务,但这种方式需要手动配置所有环境变量和启动脚本,远不如官方镜像稳定。示例Dockerfile片段:

FROM ubuntu:latest
RUN apt-get update && apt-get install -y dub zookeeper kafka
# 后续添加ZK和Kafka的配置、启动命令等

关键提醒

  • 每个Docker容器都是独立的隔离环境,镜像之间不会共享已安装的软件包
  • 确保docker-compose.yml中指定的镜像/构建路径正确指向包含dub安装的环境

内容的提问来源于stack exchange,提问作者francollado99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 10:15:05