Docker容器连接外部Mysql的几种方案
目录
- 前言
- 方案一:
- 方案二:
- 方案三:
- 总结
前言
在Linux Centos上面部署Docker容器,并且将原来的项目服务放到docker的某个镜像中,启动服务号发现无法连接到容器所在宿主机的mysql数据库,但是现在项目服务需要连接mysql数据库。
例如:SQLalchemy
# 初始化数据库连接: TODO 参数化
engine = create_engine(
f'mysql+mysqlconnector://{DB_USERNAME}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}')
# 创建DBSession类型:
DBSession = sessionmaker(bind=engine)
# 创建session对象:
session = DBSession()
但是在容器中项目localhost默认的是docker容器这个虚拟主机的ip,而我在docker该镜像容器中上面并没有安装mysql服务,
方案一:
使用宿主机的ip地址,docker有自己的ip,宿主机所在的Centos服务器也有自己的ip,如果把项目访问IP改为宿主机的ip。
输入ifconfig

替换上面的项目中访问mysql的地址即 localhost 替换好了之后启动容器。这是土办法,但遇到ip变动的window就不太可行。
方案二:
在docker配置文件yml中设置参数command
docker-compose.yml
version: '3'
services:
mysql:
restart: always
image: mysql:5.7
container_name: mysql
command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
volumes:
- ./mydir:/mydir
- ./datadir:/var/lib/mysql
- ./conf/my.cnf:/etc/my.cnf
# 数据库还原目录 可将需要还原的sql文件放在这里
- /docker/mysql/source:/docker-entrypoint-initdb.d
environment:
- MYSQL_ROOT_PASSWORD=password
- TZ=Asia/Shanghai
ports:
- 3306:3306
方案三:
如果mysql是非docker容器化部署,可以进行挂载外部mysql
docker run -p 3306:3306 --name mysql \ -v /usr/local/docker/mysql/conf:/etc/mysql \ -v /usr/local/docker/mysql/logs:/var/log/mysql \ -v /usr/local/docker/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:5.7
配置my.cnf信息
[mysqld] # 服务端字符集 character-set-server=utf8 collation_server = utf8_general_ci [client] # 客户端字符集 default-character-set=utf8
另有网友提供
找到my.cnf配置文件
注释掉 bind-address = 127.0.0.1,
重启mysql
总结
您可能感兴趣的文章
- 01-07Tomcat部署Bolo动态博客
- 01-07图文详解nginx日志切割的实现
- 01-07如何解决swarm docker 端口不通问题
- 01-07详解nginx location指令
- 01-07如何解决docker http 500错误问题
- 01-07windows server 2008安装配置DNS服务器
- 01-07Linux上搭载Nginx负载均衡配置使用案例详解
- 01-07NGINX 权限控制文件预览和下载的实现原理
- 01-07Nginx防盗链与服务优化配置的全过程
- 01-07使用 Apache 反向代理的设置技巧


阅读排行
推荐教程
- 12-23linux中ftp无法访问怎么办
- 12-11docker存储目录迁移示例教程
- 12-10docker start启动容器后仍然exit状态的解决
- 12-10Linux下如何安装Logstash
- 01-05Shell脚本去重的几种方法实例
- 12-22kvm虚拟机配置NAT端口转发的实现方法
- 12-19Zabbix SAML SSO 登录绕过漏洞的操作流程
- 12-15Docker-Compose搭建Spark集群的实现方法
- 12-14Docker Desktop无法正常启动解决(failed to start...)
- 12-14k8s 与docker空间使用分析与清理方法




