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

docker-compose连接Cassandra容器与Spring Boot web容器报202连接节点错误

问题排查与解决方案

核心问题点

  • 启动方式错误:你配置了docker-compose.yml但没有通过docker-compose命令启动服务,而是单独执行docker run启动web应用容器。单独启动的容器不在docker-compose自动创建的专属网桥下,无法解析同compose栈内的服务名,自然无法访问Cassandra容器。
  • 服务名拼写错误:docker-compose.yml中Cassandra的服务名写为casandra(缺失字母s),但你给web应用传递的环境变量CASSANDRA_HOST=cassandra,服务名不匹配就算用compose启动也无法完成域名解析。
  • 应用配置未生效:从报错日志可以看到,你的Spring Boot应用尝试连接的Cassandra地址是127.0.0.1:9042,说明应用没有正确读取CASSANDRA_HOST环境变量,要么是配置文件中写死了127.0.0.1,要么是读取环境变量的配置有误。

修复方案

1. 修正docker-compose.yml配置

官方Cassandra镜像默认已经监听0.0.0.0,无需手动修改配置文件,修正后的compose配置如下:

version: '3'

services:
  # 修正服务名拼写为cassandra
  cassandra:
    image: cassandra:3.11.11 # 明确指定版本,避免latest标签版本不一致问题
    # 可选:暴露端口方便本地工具连接Cassandra
    ports:
      - "9042:9042"
    # 添加健康检查,确保Cassandra完全就绪后再启动应用
    healthcheck:
      test: ["CMD", "cqlsh", "-e", "describe keyspaces"]
      interval: 5s
      timeout: 5s
      retries: 10

  myapp:
    image: centos7-tomcat9-myapp 
    ports:
      - "8888:8080"
    depends_on:
      cassandra:
        # 等待cassandra健康检查通过再启动
        condition: service_healthy
    environment:
      - CASSANDRA_HOST=cassandra

2. 修正Spring Boot配置

确认你的Cassandra连接配置是从环境变量读取,示例Spring Boot application.yml配置参考:

spring:
  cassandra:
    contact-points: ${CASSANDRA_HOST:127.0.0.1}
    port: 9042

3. 用正确的命令启动服务

在docker-compose.yml所在目录执行以下命令启动所有服务:

docker-compose up -d

如果需要查看日志排查问题,可以执行:

# 查看所有服务日志
docker-compose logs -f
# 单独查看myapp日志
docker-compose logs -f myapp

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:27:02