如何让Docker容器连接外部Mysql?

这篇具有很好参考价值的文章主要介绍了如何让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

如何让Docker容器连接外部Mysql?

替换上面的项目中访问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

另有网友提供文章来源地址https://www.toymoban.com/news/detail-514249.html

找到my.cnf配置文件
注释掉 bind-address = 127.0.0.1,
重启mysql

到了这里,关于如何让Docker容器连接外部Mysql?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【安装】从VMware虚拟机到Centos,到FinalShell连接虚拟机,到Centos中安装docker,用Navicat Premium连接Centos中的docker中的mysql

    安装VMware虚拟机,安装Centos,FinalShell连接虚拟机;在Centos中安装docker,下载mysql的docker,暴露端口;用Navicat Premium连接Centos中的docker中的mysql,进行增删改查 下载Centos7的网址: 使用默认设置 选择稍后安装 选择Linux系统,选择安装版本,这里选Centos,可以按需选择; 安装位置

    2024年02月02日
    浏览(29)
  • Linux(CentOS7)下如何配置多个Tomcat容器?

    1、安装jdk(yum install 安装) 查看是否系统是否自带jdk并卸载 其中,GCJ是GNU的Java编译器,可以把java程序编译成本地代码,编译成功后的可执行文件不再需要jre就可直接运行,编译成本地后的程序运行速度有所提高,缺点是生成后的文件较大。 如果存在自带的jdk相关套件,就需

    2024年02月11日
    浏览(31)
  • (二)linux使用docker容器运行mysql

    前言:在上一章安装好linux环境后,开始搭建msyql数据库,之前都是用windows安装mysql的,即使在linux上安装也是用tar解压,然后一堆的配置东西,现在用docker就是爽,几行命令就行 我这里就只放上几条指令,按顺序执行就可以,想详细看的同学可以参考这位博主的博客超详细!

    2024年02月04日
    浏览(30)
  • 如何在CentOS使用Docker搭建MinIO容器并实现无公网ip远程访问本地服务

    MinIO是一个开源的对象存储服务器,可以在各种环境中运行,例如本地、Docker容器、Kubernetes集群等。它兼容Amazon S3 API,因此可以与现有的S3工具和库无缝集成。MinIO的设计目标是高性能、高可用性和可扩展性。它可以在分布式模式下运行,以满足不同规模的存储需求。 MinIO是

    2024年04月15日
    浏览(34)
  • Linux虚拟机(CentOS)开放端口号3306,实现Mysql远程连接

    设置远程连接mysql的新账户密码 linux装好mysql后,设定远程访问的账户和密码,test表示新设置的mysql账户,%表示开启远程权限,testPassword为自己的设的新账户密码 设置好了之后就有了新的mysql账户密码了,这里不使用root【可能原因是root账户限制其它ip访问】,使用新的账号密码

    2024年02月15日
    浏览(23)
  • 如何在CentOS使用Docker运行Nacos容器并实现无公网IP远程访问UI界面

    Nacos是阿里开放的一款中间件,也是一款服务注册中心,它主要提供三种功能:持久化节点注册,非持久化节点注册和配置管理。 本例通过结合Cpolar内网穿透实现远程访问Nacos 提供的UI (控制台)界面,帮助管理所有的服务和应用的配置 Cpolar内网穿透是一种安全的内网穿透云服务

    2024年04月17日
    浏览(34)
  • Docker系列---【mysql容器手动停止后,重启服务器,mysql容器被删掉了,如何恢复mysql数据?】...

    为了快速搭建数据库,我使用了docker搭建数据库,由于服务器资源紧张,我想先把mysql容器停掉,启动jenkins容器,使用完之后再停掉jenkins,启动mysql,结果由于服务器资源有限,服务器卡死了,无法远程连接了,没办法,我只能登录运营商的云平台管理平台,强制重启服务器

    2024年02月08日
    浏览(35)
  • Docker 容器内部文件和容器外部文件互相copy

    有时需要将 Linux 服务器上的文件copy到容器的某个目录(比如:配置文件),有时将容器中的某个文件(比如:日志文件)copy到 Linux 服务器上,便于查看。 关于上述两种场景,总结如下: 1、容器外部文件 copy 到容器内部 例如,将 Linux 服务器 /opt/ 目录下的 a.txt 文件 copy 到

    2024年02月13日
    浏览(23)
  • Docker技术之容器与外部相连

    说明,在本文中,所有的images采用的是busybox:latest。系统采用的是Ubuntu22.04. 容器与外部相连说的是容器网络以外的网络,可以是任何业务网络或者其他自建的网络,通常情况下是指互联网。 一、容器访问外部网络 前面文章知道容器通过网桥(默认docker0或者自建的网桥)就可

    2024年02月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包