You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器外连接MariaDB报无法连接localhost MySQL服务器错误求助

问题排查与解决方法

你需要先确认Python代码的运行环境,两种场景的配置要求完全不同,对应修改如下即可:

场景1:代码运行在Docker宿主机本地(容器外部)

你的docker-compose中MariaDB的端口映射规则为127.0.0.1:3309:3306,即宿主机的3309端口才会转发到MariaDB容器内部的3306端口,你当前配置的端口错误,直接修改参数即可:

class DbSettings(BaseSettings):
    db_username:str = 'myuser'
    db_password: str = 'mypassword'
    db_host: str = 'localhost'
    db_port: int = 3309 # 替换为宿主机映射端口3309
    db_name: str = 'mydatabase'
    # 其余配置保持不变

场景2:代码运行在fastapi-dev容器内部

两个服务同属fastapi_network自定义网络,Docker内置DNS会自动将服务名解析为对应容器的内网IP,不需要走宿主机端口映射,修改配置如下:

class DbSettings(BaseSettings):
    db_username:str = 'myuser'
    db_password: str = 'mypassword'
    db_host: str = 'mariadb' # 替换为docker-compose中定义的mariadb服务名
    db_port: int = 3306 # 容器内网直接访问mariadb默认端口即可
    db_name: str = 'mydatabase'
    # 其余配置保持不变

额外注意你原有代码的小问题:db_port: int = '3306'中类型标注为int,默认值却写了字符串,建议统一改为int类型避免隐性转换报错。

内容的提问来源于stack exchange,提问作者An Nguyen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:45:04