sqlalchemy 无法连接到“127.0.0.1”上的 MYSQL 服务器

时间:2021-07-25 09:25:33

标签: python mysql docker docker-compose sqlalchemy

我正在尝试 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

怎么了?

1 个答案:

答案 0 :(得分:1)

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

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

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