如何从同一机器上的另一个docker实例连接到mySQL docker实例



我使用以下命令通过docker设置mySQL:

  1. docker network create -d bridge mynetwork
  2. docker运行-p 3306:3306——network mynetwork——name mysql -e MYSQL_ROOT_PASSWORD=5895 -d mysql:latest

我正在使用python连接器连接。

host=127.0.0.1
port=3306
user=root
root=5895
mysql.connector.connect(host=host, port=port, user=user, password=password, database=database)

现在,如果我在本地运行我的python文件(不是在docker上),这工作得很好。现在我想创建一个dockerized版本

Dockerfile

FROM python:3.8
WORKDIR /twitter-alpha
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY /constants ./constants
COPY /connectors ./connectors
COPY backfillFollowed.py .
COPY backfillUsers.py .
COPY .env .
RUN apt-get update
RUN apt-get -y install vim

然后我用docker build -t twitter-alpha . --no-cache构建docker实例,用docker run -itd -p 3000:3000 --name test --network mynetwork twitter-alpha启动这个docker实例。当我为我的python文件(下面的Dockerfile)创建docker映像并运行相同的python脚本时,我得到mysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (99)

如果我切换127.0.0.1与从docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' a627c65ddc3c找到的IP,它的工作,但这似乎是一个糟糕的方法,因为IP将改变每次创建容器。

解决方案是设置host= nameOfDockerInstance

花了我一点时间

最新更新