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

通过Docker Compose部署Couchbase集群:无法创建Bucket及Query服务

问题:Docker Compose部署Couchbase集群自动初始化失败

使用Docker Compose部署Couchbase集群,期望启动后自动完成集群初始化、启用Query服务并创建指定Bucket,但所有容器创建后,访问localhost:8091始终进入集群初始化页面,Bucket及Query服务未成功创建。

原Docker Compose配置如下:

version: '3'
services:
  zookeeper:
    image: confluentinc/cp-zookeeper:7.0.1
    container_name: zookeeper
    ports:
      - "2181:2181"
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000

  broker:
    image: confluentinc/cp-kafka:7.0.1
    container_name: broker
    ports:
      - "9092:9092"
    depends_on:
      - zookeeper
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092,PLAINTEXT_INTERNAL://broker:29092
      KAFKA_OFFSET_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

  couchbase:
    image: couchbase:7.0.1
    container_name: couchbase
    ports:
      - "8091-8094:8091-8094"
      - "11207-11211:11207-11211"
    environment:
      COUCHBASE_SERVER_VERSION: 7.0.1
      COUCHBASE_USERNAME: admin
      COUCHBASE_PASSWORD: password
      COUCHBASE_BUCKET: broker-events
      COUCHBASE_BUCKET_RAMSIZE: 256
      COUCHBASE_ANALYTICS_MEMORY_QUOTA: 1024
      COUCHBASE_FEATURES: query
      COUCHBASE_INDEX_STORAGE_SETTING: memopt
      COUCHBASE_SERVICES: data,index,query
    volumes:
      - couchbase-data:/opt/couchbase/var

  couchbase-wait:
    image: alpine
    container_name: couchbase-wait
    depends_on:
      - couchbase
    command: >
      /bin/sh -c "apk add --no-cache curl && 
      until curl --silent --fail http://couchbase:8091 >/dev/null; do sleep 5; done;
      echo 'Couchbase cluster is now available';
      sleep 10;
      curl --silent --fail -u admin:password -X POST http://admin:password@couchbase:8091/pools/default -d memoryQuota=1024 -d indexMemoryQuota=256;
      echo 'Couchbase pool created';
      curl --silent --fail -u admin:password -X POST http://admin:password@couchbase:8091/pools/default/buckets -d name=broker-events -d bucketType=couchbase -d ramQuotaMB=256 -d authType=sasl -d saslPassword=;
      echo 'Couchbase bucket created';
      exit 0;"

volumes:
  couchbase-data:
解决建议
  • 修复API认证冲突:couchbase-wait中的curl请求同时使用-u参数和URL中的admin:password@,会导致认证逻辑冲突。只保留一种认证方式即可,比如去掉URL中的认证信息,仅用-u admin:password。

  • 补充集群初始化核心步骤:当前脚本跳过了关键的集群初始化流程,需要先设置管理员账号、启用服务,再配置资源和创建Bucket。在修改pools的命令前添加:

    # 设置初始管理员账号
    curl -X POST http://couchbase:8091/nodes/self/controller/settings -d username=admin -d password=password;
    # 启用data、index、query服务(URL编码逗号为%2C)
    curl -u admin:password -X POST http://couchbase:8091/node/controller/setupServices -d services=kv%2Cindex%2Cquery;
    
  • 移除无效环境变量:官方Couchbase镜像不支持COUCHBASE_USERNAME、COUCHBASE_BUCKET这类自动初始化的环境变量,这些是第三方封装镜像的参数,需完全通过脚本完成初始化。

  • 修改后的couchbase-wait命令示例:

    /bin/sh -c "apk add --no-cache curl && 
    until curl --silent http://couchbase:8091 >/dev/null; do sleep 5; done;
    echo 'Couchbase cluster is now available';
    sleep 10;
    # 设置初始管理员账号
    curl -X POST http://couchbase:8091/nodes/self/controller/settings -d username=admin -d password=password;
    # 启用所需服务
    curl -u admin:password -X POST http://couchbase:8091/node/controller/setupServices -d services=kv%2Cindex%2Cquery;
    # 设置内存配额
    curl -u admin:password -X POST http://couchbase:8091/pools/default -d memoryQuota=1024 -d indexMemoryQuota=256;
    # 创建Bucket
    curl -u admin:password -X POST http://couchbase:8091/pools/default/buckets -d name=broker-events -d bucketType=couchbase -d ramQuotaMB=256 -d authType=sasl -d saslPassword=;
    echo 'Couchbase initialization completed';
    exit 0;"
    
  • 清理残留数据卷:如果之前的失败导致数据卷中存在无效配置,先清理再重启:

    docker-compose down -v
    docker-compose up -d
    
  • 排查API错误:去掉curl命令中的--silent --fail参数,能看到具体的API调用报错信息,方便定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:54:58