【问题标题】:sqlalchemy cannot connect to MYSQL server on '127.0.0.1'sqlalchemy 无法连接到 '127.0.0.1' 上的 MYSQL 服务器
【发布时间】:2021-07-25 09:25:33
【问题描述】:

我正在尝试 dockersize powerdns-admin,它需要通过 sqlalchemy 连接到我的 mariadb。 码头工人组成: docker-compose.yml

version: "3"

services:
  app:
    image: ngoduykhanh/powerdns-admin:latest
    container_name: powerdns_admin
    ports:
      - "9191:80"
    logging:
      driver: json-file
      options:
        max-size: 50m
    environment:
      - SQLALCHEMY_DATABASE_URI=mysql://root:dbpass@127.0.0.1/powerdns
      - GUNICORN_TIMEOUT=60
      - GUNICORN_WORKERS=2
      - GUNICORN_LOGLEVEL=DEBUG
      - OFFLINE_MODE=False # True for offline, False for external resources

当我运行 docker-compose up 时,它只输出这个错误:

sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '127.0.0.1' (115)")

当我做mysql -uroot -pdbpass 时,我可以成功连接。 我做的时候也一样:

mysql -uroot -pdbpass -h 127.0.0.1
mysql -uroot -pdbpass -h localhost

怎么了?

【问题讨论】:

    标签: python mysql docker docker-compose sqlalchemy


    【解决方案1】:

    当您运行 docker 容器时,它的行为很像一台单独的机器。当您尝试连接到 127.0.0.1 时,您正在尝试连接到容器本身。由于您的容器不包含您的数据库,因此连接失败。

    您可以从容器内部访问 IP 地址为 172.17.0.1 的主机。所以你的数据库URI应该是

    SQLALCHEMY_DATABASE_URI=mysql://root:dbpass@172.17.0.1/powerdns
    

    【讨论】:

      猜你喜欢
      • 2018-01-31
      • 2012-02-08
      • 2014-08-22
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      • 2015-11-24
      • 2014-12-08
      相关资源
      最近更新 更多