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

无法加入Docker Compose部署的Couchbase集群问题求助

问题:更换Couchbase镜像后自动配置集群和Bucket失效的问题

问题背景

原本使用第三方镜像bentonam/couchbase-docker:community部署Couchbase,对应的docker-compose.yaml配置如下:

volumes:
  couchbasedata:
    name: "couchbase"
    external: false
networks:
  local:
    name: "local"

services:
 couchbase:
    image: bentonam/couchbase-docker:community
    container_name: couchbase
    networks:
      - local
    environment:
      CLUSTER_USERNAME: Administrator
      CLUSTER_PASSWORD: password
      CLUSTER_NAME: LocalCouchbaseCluster
      SERVICES: data,index,query,fts
      CLUSTER_RAMSIZE: 1024
      BUCKET: testbucket
      BUCKET_RAMSIZE: 256
    volumes:
      - couchbasedata:/opt/couchbase/var
    ports:
      - 8091-8094:8091-8094
      - 11210:11210

更换为官方镜像couchbase:community-7.1.1后,删除旧容器、镜像和卷,执行docker-compose -f "\.\docker-compose.yaml" up -d启动,出现以下问题:

  • 访问localhost:8091需选择新建/加入集群,无法直接进入登录页
  • 选择“加入现有集群”并输入集群名LocalCouchbaseCluster,报错:Failed to connect to http://LocalCouchbaseCluster:8091. Failed to resolve address for "LocalCouchbaseCluster". The hostname may be incorrect or not resolvable.
  • 用localhost或127.0.0.1尝试加入集群,报错:Adding nodes to not provisioned nodes is not allowed
  • 新建集群后,需手动创建testbucket,无法自动完成配置

核心原因

第三方bentonam/couchbase-docker镜像封装了自定义初始化脚本,能通过环境变量自动完成集群初始化、Bucket创建等操作;而官方couchbase镜像默认无此逻辑,需要通过官方工具或指定环境变量实现自动配置。

解决办法

方法1:使用官方couchbase-cli命令初始化(推荐)

修改docker-compose.yaml,添加command字段,通过脚本完成服务启动、集群初始化和Bucket创建:

volumes:
  couchbasedata:
    name: "couchbase"
    external: false
networks:
  local:
    name: "local"

services:
 couchbase:
    image: couchbase:community-7.1.1
    container_name: couchbase
    networks:
      - local
    environment:
      CLUSTER_USERNAME: Administrator
      CLUSTER_PASSWORD: password
    volumes:
      - couchbasedata:/opt/couchbase/var
    ports:
      - 8091-8094:8091-8094
      - 11210:11210
    command: >
      bash -c "
        /entrypoint.sh couchbase-server &
        sleep 15
        couchbase-cli cluster-init -c localhost:8091 \
          --cluster-username=$${CLUSTER_USERNAME} \
          --cluster-password=$${CLUSTER_PASSWORD} \
          --cluster-name=LocalCouchbaseCluster \
          --services=data,index,query,fts \
          --cluster-ramsize=1024
        couchbase-cli bucket-create -c localhost:8091 \
          --username=$${CLUSTER_USERNAME} \
          --password=$${CLUSTER_PASSWORD} \
          --bucket=testbucket \
          --bucket-ramsize=256
        wait
      "

说明:

  • 先启动Couchbase服务,等待15秒确保服务就绪(可根据实际情况调整等待时间)
  • 通过couchbase-cli cluster-init完成集群初始化,配置用户名、密码、集群名称、服务类型及内存
  • 通过couchbase-cli bucket-create创建指定Bucket
  • wait命令确保容器保持运行状态

方法2:使用官方自动初始化环境变量(7.0+版本支持)

官方镜像从7.0版本开始支持部分自动初始化环境变量,需注意变量名与第三方镜像的区别:

environment:
  COUCHBASE_ADMINISTRATOR_USERNAME: Administrator
  COUCHBASE_ADMINISTRATOR_PASSWORD: password
  COUCHBASE_CLUSTER_NAME: LocalCouchbaseCluster
  COUCHBASE_SERVICES: data,index,query,fts
  COUCHBASE_CLUSTER_RAM_SIZE: 1024
  COUCHBASE_BUCKETS: "testbucket:256"

说明:

  • 官方变量前缀为COUCHBASE_,与第三方镜像的无前缀变量不兼容
  • COUCHBASE_BUCKETS格式为bucketName:ramSize,多Bucket用逗号分隔
  • 需确保镜像版本为7.0及以上,部分版本可能需额外配置

报错原因解释

  • 输入LocalCouchbaseCluster加入集群:Docker容器内未配置该主机名的DNS解析,无法识别此地址
  • 用localhost/127.0.0.1加入集群:此时节点未完成初始化,官方镜像默认不会自动初始化集群,因此提示无法向未配置节点添加新节点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 23:15:54