切换语言为:繁体
Docker下的MySQL配置和跨容器调用

Docker下的MySQL配置和跨容器调用

  • 爱糖宝
  • 2024-06-16
  • 2194
  • 0
  • 0

最近延续之前的开发流程,使用docker进行环境搭配,但发现使用docker进行数据库的连接会比较麻烦,所以写写文章记录一下下

docker拉取镜像

有桌面端的可以直接搜索直接pull

Docker下的MySQL配置和跨容器调用 

没有的话直接就docker pull就好了

docker pull mysql


接下来就是启动我们的mysql镜像了,这里就不建议用桌面端了,直接打开我们的cmd或powershell就行了

输入这个

#原 docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

#修改后 docker run --name some-mysql -p 3307:3306-e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql

#这里的some-mysql是我设定的容器名称,MYSQL_ROOT_PASSWORD是你的密码,我设定的是my-secret-pw,
-d后面跟的是镜像mysql


ok,然后我们就能看见直接docker里的容器都有啥了

docker ps


Docker下的MySQL配置和跨容器调用 

接下来进入我们的容器里

  Docker下的MySQL配置和跨容器调用 

使用的是

docker exec -it 容器ID /bin/bash


然后进入我们的sql

Docker下的MySQL配置和跨容器调用 

因为设置的密码是my-secret-pw
所以-p后面写他
这边启动完了,我们可以试试在navicat上连接试试

  Docker下的MySQL配置和跨容器调用 

填上我们的信息,这里讲一个小点,因为docker容器跑着本机,主机地址也是直接就是localhost就行,端口刚刚启动的时候,设置的是3307. Docker下的MySQL配置和跨容器调用 

这样便连接成功了
那个localhost也可写你主机的ip地址,怎么找呢
在cmd里输入这个就好了 

Docker下的MySQL配置和跨容器调用

Docker下的MySQL配置和跨容器调用

Docker下的MySQL配置和跨容器调用

这里的ipv4地址就是我们的localhost了

跨容器连接

因为我另一个容器跑的是django,所以就以django作为演示了 

Docker下的MySQL配置和跨容器调用

我们可以看见如果按照桌面上的配置,它跑不通,会报错,django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '172.xxxx' ([Errno 111] Connection refused)")

那咋办呢?
我们换成localhost试试

Docker下的MySQL配置和跨容器调用 

还是报错,这个属于是容器隔离的锅,那么是不是说,只要我们是一个容器就行了,但是一个容器的话,我们得重写dockerfile很难受,而且这样服务端跟客户端不分离也难受,这样的话,理论上,只要我们是一个ip就行,那该咋做呢??

我们只需要把我们俩个容器放到一个network里就好了
打开powershell

Docker下的MySQL配置和跨容器调用

docker network create mynetwork
docker network connect mynetwork some-mysql
docker network connect mynetwork fervent_panini

容器名记得写对,别写了我的了。

连上了之后,我们再试试

Docker下的MySQL配置和跨容器调用 

还是不行,咋办呢,只要我们把host改成容器名就好了

  Docker下的MySQL配置和跨容器调用 

这样跨容器的mysql就配置好了

0条评论

您的电子邮件等信息不会被公开,以下所有项均必填

OK! You can skip this field.