docker-compose 容器间通信,连不上mysql

新手上路,请多包涵

docker-compose 部署golang,mysql, 远程,127.0.0.1均可访问容器mysql, 但go容器里连不上. docker-compose.yaml文件如下:

version: '2'
services:
  order_mysql:
    networks:
      - test_network
    image: mysql
    command: --default-authentication-plugin=mysql_native_password 
    container_name: "order_mysql"
    ports:
      - "3333:3306"
    expose:
      - "3306"
    environment:
      MYSQL_DATABASE: order
      MYSQL_USER: root
      MYSQL_PASSWORD: 123456
      TZ: Asia/Shanghai 
    restart: always
    volumes:
      - "./mysql/db:/var/lib/mysql"
      - "./mysql/conf/my.cnf:/etc/my.cnf"
      - "./mysql/init:/docker-entrypoint-initdb.d/"

  order_redis:
    image: redis
    command: --requirepass 12345678
    container_name: "order_redis"
    ports:
      - "6666:6379"
    volumes:
      - "./redis:/var/lib/redis"
    networks:
      - test_network
  order_golang:
    depends_on:
      - order_mysql
      - order_redis
    build: .
    ports:
      - "2020:2020"
    tty: true
    networks:
      - test_network
    links:
      - order_mysql:order_mysql
      - order_redis:order_redis

networks:
  test_network:
  

host使用的是别名order_mysql的地址, 网段也分配了,order_golang容器编译没问题,容器连mysql怎么连不上

dial tcp 172.21.0.2:3306: connect: connection refused
阅读 10k
3 个回答

给 MySql 的部分加个 command --default-authentication-plugin=mysql_native_password

或者你指定一下 mysql 的镜像版本为 5.7 及以前。

docker的depends_on只是先启动而已,并不能保证启动成功
主要还是golang的代码有问题吧,golang连接数据库是自带线程池和重连的,应该是只要打log报错就好了,不需要直接停止服务

新手上路,请多包涵

你好 我试了加command --default-authentication-plugin=mysql_native_password但是还是连接不上 connect: connection refused

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏