简体   繁体   English

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

[英]How to connect to mySQL docker instance from another docker instance on the same machine

I have setup mySQL through docker using below commands:我使用以下命令设置了 mySQL 到 docker:

  1. docker.network create -d bridge m.network docker.network create -d 网桥 m.network
  2. docker run -p 3306:3306 -.network m.network --name mysql -e MYSQL_ROOT_PASSWORD=5895 -d mysql:latest docker run -p 3306:3306 -.network m.network --name mysql -e MYSQL_ROOT_PASSWORD=5895 -d mysql:latest

I'm using a python connector to connect.我正在使用 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)

Now this works fine if I run my python file locally (not on docker).现在,如果我在本地(而不是在 docker 上)运行我的 python 文件,这就可以正常工作了。 Now I want to create a dockerized version.现在我想创建一个 dockerized 版本。

Dockerfile 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

I then build docker instance with docker build -t twitter-alpha. --no-cache然后,我使用docker build -t twitter-alpha. --no-cache docker build -t twitter-alpha. --no-cache and startup this docker instance with docker run -itd -p 3000:3000 --name test -.network m.network twitter-alpha . docker build -t twitter-alpha. --no-cache并使用docker run -itd -p 3000:3000 --name test -.network m.network twitter-alpha启动这个 docker 实例。 When I create a docker image for my python files (Dockerfile below) and run the same python script I get mysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (99)当我为我的 python 文件(下面的 Dockerfile)创建一个 docker 图像并运行相同的 python 脚本时,我得到mysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (99)

If I switch 127.0.0.1 with the IP found from docker inspect --format='{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' a627c65ddc3c it works, but this seems like a bad approach since IP will change every time the container is created.如果我将 127.0.0.1 切换为从 docker 中找到的docker inspect --format='{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' a627c65ddc3c它可以工作,但这似乎是一个糟糕的方法因为每次创建容器时 IP 都会改变。

Solution was to set host= nameOfDockerInstance解决方案是设置 host= nameOfDockerInstance

Took me a while花了我一段时间

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 无法从 Tortoise/Python 连接到 Docker mySQL 实例,直到我第一次从 Docker PHPMyAdmin 连接到 mySQL 实例 - Cannot connect to Docker mySQL instance from Tortoise/Python, until I first connect to mySQL instance from Docker PHPMyAdmin 无法从Python连接到Docker Postgresql实例 - Failure to connect to Docker Postgresql instance from Python 如何连接到在Docker实例中运行的Spark - How to connect to spark running within a docker instance python 连接到 postgres docker 外部 docker 实例 - python connect to postgres docker instance outside docker 如何连接我用 docker compose 创建的数据库实例? - How can I connect the database instance I created with docker compose? 如何从另一个 Docker 容器连接 Postgres Docker 镜像 - How to connect a Postgres Docker image from another Docker container 如何检查docker实例是否正在运行? - How to check if a docker instance is running? 无法从我的 docker 容器连接到远程数据库实例,但是可以从我的主机连接 - Cannot connect to remote Database instance from my docker container, however can connect from my host computer 从同一主机上的另一个 docker 容器连接到 Milvus 独立服务器(在 docker 容器中) - Connect to Milvus standalone server (in docker container) from another docker container on the same host 无法从Docker容器中运行的Django应用连接到远程PostgreSQL实例 - Cannot connect to remote PostgreSQL instance from Django app running within Docker container
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM