Docker容器连接外部Mysql的几种方案

 更新时间:2023年06月27日 11:52:57   作者:liyinchi1988  
这篇文章主要给大家介绍了关于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

总结

到此这篇关于Docker容器连接外部Mysql的几种方案的文章就介绍到这了,更多相关Docker容器连接外部Mysql内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何在docker中运行springboot项目过程图解

    如何在docker中运行springboot项目过程图解

    这篇文章主要介绍了如何在docker中运行springboot项目过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 在windows下的安装Docker的教程

    在windows下的安装Docker的教程

    这篇文章主要介绍了在windows下的安装Docker的教程,注意只能是64的系统,需要的朋友可以参考下
    2015-12-12
  • Docker使用数据容器的具体示例

    Docker使用数据容器的具体示例

    本文主要介绍了Docker使用数据容器的具体示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 详解Docker中安装配置Oracle数据库

    详解Docker中安装配置Oracle数据库

    本篇文章主要介绍了详解Docker中安装配置Oracle数据库,具有一定的参考价值,有兴趣的可以了解一下。
    2017-04-04
  • docker自建GitLab仓库的实现

    docker自建GitLab仓库的实现

    Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,本文主要介绍了docker自建GitLab仓库的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • docker容器无法访问宿主机端口的解决

    docker容器无法访问宿主机端口的解决

    这篇文章主要介绍了docker容器无法访问宿主机端口的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 解决docker启动容器错误:docker:Error response from daemon:OCI runtime create failed

    解决docker启动容器错误:docker:Error response from dae

    这篇文章主要介绍了解决docker启动容器错误:docker:Error response from daemon:OCI runtime create failed问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Docker.v19安装和配置Docker Compose编排工具的方法

    Docker.v19安装和配置Docker Compose编排工具的方法

    这篇文章主要介绍了安装Docker.v19和配置Docker Compose编排工具的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2020-06-06
  • 详解Docker 容器使用 cgroups 限制资源使用

    详解Docker 容器使用 cgroups 限制资源使用

    本篇文章主要介绍了Docker 容器使用 cgroups 限制资源使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • 使用Docker容器在Linux上部署MySQL方式

    使用Docker容器在Linux上部署MySQL方式

    本文详细介绍了如何在Linux上使用Docker部署MySQL服务器,包括下载镜像、启动容器、连接到服务器、停止和删除容器,以及升级服务器的步骤
    2025-02-02

最新评论