我使用以下命令通过docker设置mySQL:
- docker network create -d bridge mynetwork
- 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
花了我一点时间