簡體   English   中英

無法連接到 mysql docker-compose

[英]can't connect to mysql docker-compose

我無法將我的 docker 應用程序連接到我的 MySQL 服務器。 但是我可以將應用程序從本地計算機連接到服務器。

我使用MySQL version 8.0.20

應用程序.py:

import mysql.connector

server_config = {
    'user': 'my_user',
    'password': 'my_password',
    'host': '127.0.0.1',
    'database': 'db',
    'port': 3306,
}
conn = mysql.connector.connect(**server_config)
cursor = conn.cursor()

print('db has been connected')

Dockerfile(應用程序):

FROM python:3.10

WORKDIR /usr/app/src
COPY . ./

RUN pip install -r requirements.txt

要求.txt:

mysql-connector-python==8.0.20

docker-compose.yml:

version: '3.8'

services:
  app:
    build: ./
    command: sh -c "sleep 20s ; python3 ./app.py"
    depends_on:
      - db
  db:
    image: mysql:8.0.20
    restart: always
    environment:
      MYSQL_DATABASE: 'db'
      MYSQL_USER: 'my_user'
      MYSQL_PASSWORD: 'my_password'
      MYSQL_ROOT_PASSWORD: 'my_root_password'
    ports:
      - '3306:3306' 

回溯錯誤:

Traceback (most recent call last):
  File "/usr/app/src/./app.py", line 10, in <module>
    conn = mysql.connector.connect(**server_config)
  File "/usr/local/lib/python3.10/site-packages/mysql/connector/pooling.py", line 286, in connect
    return CMySQLConnection(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/mysql/connector/connection_cext.py", line 101, in __init__
    self.connect(**kwargs)
  File "/usr/local/lib/python3.10/site-packages/mysql/connector/abstracts.py", line 1095, in connect
    self._open_connection()
  File "/usr/local/lib/python3.10/site-packages/mysql/connector/connection_cext.py", line 268, in _open_connection
    raise get_mysql_exception(
mysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on '127.0.0.1:3306' (111)

但是,如果我從本地計算機運行 app.py(服務器在 docker 上運行,app.py 在沒有 docker 的情況下運行)output 是:

db has been connected

您的主機名錯誤。 它應該是db

基本上應用程序容器正在嘗試連接到它的localhost:3306這是不正確的。 db 服務正在db:3306上運行。

暫無
暫無

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

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