簡體   English   中英

如何從同一台機器上的另一個 docker 實例連接到 mySQL docker 實例

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

我使用以下命令設置了 mySQL 到 docker:

  1. 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

我正在使用 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)

現在,如果我在本地(而不是在 docker 上)運行我的 python 文件,這就可以正常工作了。 現在我想創建一個 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 build -t twitter-alpha. --no-cache並使用docker run -itd -p 3000:3000 --name test -.network m.network 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 中找到的docker inspect --format='{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' a627c65ddc3c它可以工作,但這似乎是一個糟糕的方法因為每次創建容器時 IP 都會改變。

解決方案是設置 host= nameOfDockerInstance

花了我一段時間

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM