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

Docker化Liquibase无法连接Docker化ScyllaDB,报连接创建失败错误

解决Liquibase Docker容器连接ScyllaDB的失败问题

问题核心

Docker容器内的localhost指向容器自身,而非宿主机。你的liquibase容器尝试连接localhost:9041,实际是在访问容器内部的端口,而非宿主机上运行的ScyllaDB服务。

具体解决方案

方案1:ScyllaDB与Liquibase在同一Docker网络(推荐)

如果你的ScyllaDB也是通过Docker运行,将其加入同一个docker-compose网络,直接用服务名替代localhost:

  1. 修改liquibase.properties中的url:
url: jdbc:cassandra://scylladb:9041/mykeyspace
  1. 在docker-compose.yml中添加ScyllaDB服务(如果尚未配置),确保两者共享同一网络:
version: '3'

services:
  scylladb:
    image: scylladb/scylla:latest
    container_name: scylladbcontainer
    ports:
      - "9041:9042"  # 确认宿主机9041映射到容器默认端口9042
    volumes:
      - scylladb_data:/var/lib/scylla
  liquibase:
    image: liquibase/liquibase:4.1.1
    container_name: liquibasecontainer
    volumes:
      - ./changelogs:/liquibase/changelogs
      - ./liquibase.properties:/liquibase/liquibase.properties
      - /home/asif/Liquibase/liquibase-4.1.1/lib:/liquibase/lib
    command: ["--defaultsFile=/liquibase/liquibase.properties", "update"]
    depends_on:
      - scylladb  # 确保ScyllaDB启动后再运行Liquibase

volumes:
  scylladb_data:

方案2:ScyllaDB运行在宿主机或外部网络

如果ScyllaDB直接运行在宿主机,或者不在同一Docker网络,通过以下方式处理:

  • 方式A:使用宿主机IP地址
    找到宿主机的局域网IP(如192.168.1.100),修改liquibase.properties的url:
    url: jdbc:cassandra://192.168.1.100:9041/mykeyspace
    
  • 方式B:使用host网络模式
    在docker-compose.yml的liquibase服务中添加network_mode: host,让容器直接使用宿主机网络,此时localhost会指向宿主机:
    services:
      liquibase:
        image: liquibase/liquibase:4.1.1
        container_name: liquibasecontainer
        network_mode: host
        volumes:
          - ./changelogs:/liquibase/changelogs
          - ./liquibase.properties:/liquibase/liquibase.properties
          - /home/asif/Liquibase/liquibase-4.1.1/lib:/liquibase/lib
        command: ["--defaultsFile=/liquibase/liquibase.properties", "update"]
    

额外检查项

  1. 确认ScyllaDB的端口映射正确:宿主机的9041端口确实映射到ScyllaDB容器的9042端口(ScyllaDB默认端口为9042)。
  2. 验证JDBC驱动:确保挂载的/liquibase/lib目录下包含正确版本的Simba Cassandra JDBC驱动jar包,且驱动类名com.simba.cassandra.jdbc42.Driver与jar包匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:57:03