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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(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