docker-compose部署Mysql后,本地Navciat无法连接

问题描述:

将JAVA微服务项目smart-demo上传到阿里云服务器的/tmp目录下,然后使用docker-compose up -d一键运行容器,发现本地Navicat和阿里云服务器都无法连接mysql。重启阿里云服务器后,/tmp目录下的smart-demo消失,docker start命令启动mysql容器后,本地Navicat可以连接mysql容器。

报错信息:

docker-compose.yml 文件配置

version: "3.2"

services:
  nacos:
    image: nacos/nacos-server
    networks:
      hc_net:
        ipv4_address: 172.18.0.100    
    environment:
      MODE: standalone
    ports:
      - "8848:8848"

  mysql:
    image: mysql:5.7.25
    networks:
      hc_net:
        ipv4_address: 172.18.0.101
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - "$PWD/mysql/data:/var/lib/mysql"
      - "$PWD/mysql/conf:/etc/mysql/conf.d/"
    ports:
      - "3306:3306"  

  rabbitmq:
    image: rabbitmq:management
    networks:
      hc_net:
        ipv4_address: 172.18.0.102
    environment:
      RABBITMQ_DEFAULT_USER: root
      RABBITMQ_DEFAULT_PASS: root
    ports:
      - "5672:5672"
      - "15672:15672"
      
  smart-admin:
    networks:
      hc_net:
        ipv4_address: 172.18.0.103
    extra_hosts:
      - "nacos:172.18.0.100"
      - "rabbitmq:172.18.0.102"
      - "mysql:172.18.0.101"
    build: ./smart-admin
    
  smart-dubbo-db:
    networks:
      hc_net:
        ipv4_address: 172.18.0.104
    build: ./smart-dubbo-db

  smart-gateway:
    networks:
      hc_net:
        ipv4_address: 172.18.0.105
    build: ./smart-gateway
    ports:
      - "8084:8084"

networks:
  hc_net:
    driver: bridge
    ipam:
      driver: default
      config:
      -
        subnet: 172.18.0.0/24

报错原因:

挂载的目录问题。

将smart-demo文件上传到阿里云服务器时,该文件包含了docker-compose文件描述mysql挂载数据卷时所挂载的两个目录,即 $PWD/mysql/data 和 $PWD/mysql/conf,这两个目录包含一些未知信息。

解决方案1:将这两个文件在阿里云服务器中删除后,重启容器,本地Navicat可以连接数据库。

解决方案2:重启阿里云服务器后,服务器自动清理/tmp目录下的文件,/tmp目录下的smart-demo文件消失,即挂载的两个目录也消失了,但是容器挂载目录的信息还在,本地Navicat可以连接数据库,docker容器会自动创建两个新的$PWD/mysql/data 和 $PWD/mysql/conf目录去做持久化操作。

解决方案3:修改docker-compose文件中关于mysql数据库目录挂载的信息,将宿主机目录进行更换,可以换成一个不存在的目录,docker容器进行持久化操作时会自动创建这个目录。修改后重新启动容器即可。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值