V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
puremaker
V2EX  ›  Java

Springboot 项目部署到 docker 无法连通数据库

  •  
  •   puremaker · 5 小时 50 分钟前 · 580 次点击

    macbook 装了 orbstrack ,用 docker 部署了 mysql 、redis 和 centos 。

    我现在有两个 springboot 项目,这两个项目本地开发连接 docker 的 mysql 都没有问题。

    然后都部署到同一个 centos 虚拟机里,都使用的是本电脑的局域网 ip 连接的数据库,一个可以正常访问到数据库,一个就访问不到,确认了链接 url 除了库名都是一样的,想请教一下这能是什么原因呢?

    puremaker
        1
    puremaker  
    OP
       5 小时 38 分钟前
    并且有问题的这个项目连接到 redis 是正常的。redis 和 mysql 是同一个 ip 地址,映射的不同端口
    wangxin3
        2
    wangxin3  
       5 小时 31 分钟前
    1 、连不上提示什么?
    2 、一个项目一个项目试试呢,别同时启动两个。
    3 、你这套娃也太狠了 在 centos 里面再装个 docker 呢
    stinkytofux
        3
    stinkytofux  
       5 小时 22 分钟前
    mysql 新建数据库的时候是有访问权限的, 需要指定本机访问还是所有人访问, 默认本机访问拒绝外部访问, 既然只是库名不一样导致的问题, 很可能是有问题的库权限的问题, 你可以用 shell 登录到 mysql 检查一下.
    howfree
        4
    howfree  
       5 小时 20 分钟前
    看 network 是不是同一个
    puremaker
        5
    puremaker  
    OP
       5 小时 19 分钟前
    @wangxin3
    提示这些:
    ERROR 526 --- [reate-475603167] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:mysql://192.168.10.106:60010/the_future_of_bamboo?characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&serverTimezone=GMT%2B8, errorCode 0, state 08001

    java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

    一个项目一个项目试了,一样的问题
    没有套娃啊。就是 orbstrack 就是 docker 嘛,起了三个容器,一个 mysql 一个 redis 一个 centos ,项目就在 centos 里运行啊,没套娃啊
    wangxin3
        6
    wangxin3  
       5 小时 16 分钟前
    @puremaker #5 看下数据库驱动对不对,mysql8 版本数据库要换驱动,com.mysql.cj.jdbc.Driver
    superrichman
        7
    superrichman  
       5 小时 16 分钟前
    你的两个 mysql 是什么版本
    zed1018
        8
    zed1018  
       5 小时 15 分钟前
    docker run -it --rm bash 你在容器里的 bash 看看端口通不通,通了再考虑背的问题
    yinmin
        9
    yinmin  
       5 小时 13 分钟前 via iPhone
    你的 2 个容器是不是:一个用 host 网络模式、另外一个是用 bridge 网络模式?你大概率需要配置 docker 主机防火墙开放 tcp 端口的。

    其实有 1 个简单有效的方式,容器设置固定 ip 地址,然后连接这个容器固定 ip 地址。
    puremaker
        10
    puremaker  
    OP
       5 小时 13 分钟前
    @stinkytofux 不是这个问题,我把有问题项目的表复制了一份到没问题项目的那个库,然后连到那个库上,也是连接不通
    puremaker
        11
    puremaker  
    OP
       5 小时 9 分钟前
    @yinmin 网络一定是通的各位,因为我把两个项目部署在同一个 centos 虚拟机里,一个能连上 mysql 另一个就正常也应该可以。然后就是我把有问题的那个项目的数据库表拷贝到了没有问题的项目的数据库里,然后把有问题的项目的库改成了没问题项目的那个库,这样正常不就是可以连接了吗。但是还是不行。
    puremaker
        12
    puremaker  
    OP
       5 小时 9 分钟前
    @superrichman 一个 mysql ,只有一个
    Latin
        13
    Latin  
       4 小时 55 分钟前
    centos 上是不是启用 ipv6 然后紊乱了
    不然就 docker-compose 编排到一起用服务名发现或者固定 network
    sazima
        14
    sazima  
       4 小时 53 分钟前
    1. ping 一下
    2. telnet 一下
    3 使用 mysql 命令连接测试一下。
    oneisall8955
        15
    oneisall8955  
    PRO
       4 小时 5 分钟前
    开 ssh 让我来
    yeteng
        16
    yeteng  
       3 小时 12 分钟前
    可以把配置文件的数据库连接 IP 改为 MySQL 的容器名称或者给 mysql 容器分配的 IP
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2655 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:46 · PVG 19:46 · LAX 04:46 · JFK 07:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.