首页 > 解决方案 > FastAPI-mysql 码头工人。mysql return (2003, "Can't connect to MySQL server on '127.0.0.1')

问题描述

这是我的 docker-compose-yml 文件。首先,我尝试运行 db 服务,它工作正常并且 docker 运行成功。但是当我运行应用程序服务时,在终端中显示已连接到数据库,但我收到错误消息(2003,“无法连接到‘127.0.0.1’上的 MySQL 服务器)

 version: '4'
    
    services:
      app:
        build: .
        ports:
          - "8000:8000"
        env_file:
          - .env
        depends_on:
          - db
        links:
          - db  
      db:
        environment:
              - MYSQL_ROOT_PASSWORD=root
              -
        image: mysql
        ports:
          - "3307:3307"
        env_file:
          - .env

在此处输入图像描述

标签: mysqldockerdocker-composefastapi

解决方案


FastAPI 应用程序使用什么环境变量连接到 MySQL 主机?

如果您使用 docker-compose 网络,则服务需要使用容器名称才能相互(即mysql://db:3307/db_name_here)而不是localhost

默认情况下,Compose 会为您的应用程序设置一个网络。服务的每个容器都加入默认网络,并且可以被该网络上的其他容器访问,并且可以通过与容器名称相同的主机名被它们发现。

有关网络的更多信息可以在他们的文档中找到

同样值得注意的是,由于您正在使用,links您可以像这样设置别名:

version: "3.9"
services:

  web:
    build: .
    links:
      - "db:database"
  db:
    image: postgres

链接文档源


推荐阅读